標籤:
———————————————————
1、匯入 .import命令 ( FILE ==> TABLE)
———————————————————
sqlite>.import FILE TABLE //Import data from FILE into TABLE
----------例:
目地:將data.txt 中的資料內容匯入到test_database.db資料庫的table_im表中。
- 開啟資料庫檔案,將data.txt文本中的內容匯入某table
我的操作:在目標表table_im沒有被建立的情況下,
結果:執行 sqlite>.import data.txt table_im,會將data.txt的第一行資料當作table_im的欄位名col_name,並將後面的2~5行的資料作為欄位列內容匯入table_im。詳情如下(看注釋):
[email protected]:~/sqlite_C# sqlite3 test_database.db
SQLite version 3.8.7.4 2014-12-09 01:34:36
Enter ".help" for usage hints.
sqlite> .table
COMPANY //開始只有COMPANY這一個table
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS TEXT , SALARY REAL );
INSERT INTO "COMPANY" VALUES(1,‘LiA‘,20,‘China‘,100000.0);
INSERT INTO "COMPANY" VALUES(2,‘LiB‘,25,‘America‘,200000.0);
INSERT INTO "COMPANY" VALUES(3,‘LiC‘,30,‘earth‘,300000.0);
INSERT INTO "COMPANY" VALUES(5,‘LIE‘,40,‘Ground‘,500000.0);
INSERT INTO "COMPANY" VALUES(6,‘LiF‘,45,‘Home‘,600000.0);
COMMIT;
sqlite> .import data.txt table_im //匯入操作 (在這之前table_im沒有被create)
sqlite> .table
COMPANY table_im //在這裡可以看出來, table_im被上一步操作建立了,
sqlite> .dump //然後我查看資料庫中table_im是怎麼被建立的,表結構是怎麼樣的
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS TEXT , SALARY REAL );
INSERT INTO "COMPANY" VALUES(1,‘LiA‘,20,‘China‘,100000.0);
INSERT INTO "COMPANY" VALUES(2,‘LiB‘,25,‘America‘,200000.0);
INSERT INTO "COMPANY" VALUES(3,‘LiC‘,30,‘earth‘,300000.0);
INSERT INTO "COMPANY" VALUES(5,‘LIE‘,40,‘Ground‘,500000.0);
INSERT INTO "COMPANY" VALUES(6,‘LiF‘,45,‘Home‘,600000.0);
CREATE TABLE table_im(
"1" TEXT,
"LiA" TEXT,
"20" TEXT,
"China" TEXT,
"100000.0" TEXT //可看到,data.txt的第一行資料被當作了table_im的欄位名,並且,表結構的欄位類型也被自動產生了,清一色的TEXT類型 。
);
INSERT INTO "table_im" VALUES(‘2‘,‘LiB‘,‘25‘,‘America‘,‘200000.0‘);
INSERT INTO "table_im" VALUES(‘3‘,‘LiC‘,‘30‘,‘earth‘,‘300000.0‘);
INSERT INTO "table_im" VALUES(‘5‘,‘LIE‘,‘40‘,‘Ground‘,‘500000.0‘);
INSERT INTO "table_im" VALUES(‘6‘,‘LiF‘,‘45‘,‘Home‘,‘600000.0‘);
COMMIT;
sqlite> select * from table_im; //於是table_im的欄位內容就從data.txt的第二行開始
2|LiB|25|America|200000.0
3|LiC|30|earth|300000.0
5|LIE|40|Ground|500000.0
6|LiF|45|Home|600000.0
所以說,建議:先建立表,定義表結構,再將文字檔匯入到表中
正確匯入方法:
sqlite> CREATE TABLE TABLE_TEST( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS TEXT , SALARY REAL );
sqlite> .TABLE
Error: unknown command or invalid arguments: "TABLE". Enter ".help" for help
sqlite> .table
COMPANY TABLE_TEST
sqlite> .import data.txt TABLE_TEST
sqlite> .dump TABLE_TEST
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE TABLE_TEST( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS TEXT , SALARY REAL );
INSERT INTO "TABLE_TEST" VALUES(1,‘LiA‘,20,‘China‘,100000.0);
INSERT INTO "TABLE_TEST" VALUES(2,‘LiB‘,25,‘America‘,200000.0);
INSERT INTO "TABLE_TEST" VALUES(3,‘LiC‘,30,‘earth‘,300000.0);
INSERT INTO "TABLE_TEST" VALUES(5,‘LIE‘,40,‘Ground‘,500000.0);
INSERT INTO "TABLE_TEST" VALUES(6,‘LiF‘,45,‘Home‘,600000.0);
COMMIT;
_________________________________________
2、匯出 .output命令 (TABLE==>FILE)
_________________________________________
sqlite>.output FILE_NAME //Send outputto FILENAME
----------例:
[email protected]:~/sqlite_C# sqlite3 test_database.db
SQLite version 3.8.7.4 2014-12-09 01:34:36
Enter ".help" for usage hints.
sqlite> .output output.txt //將結果集輸出定位到output.txt
sqlite> select * from COMPANY; //查尋輸出
sqlite> .exit
[email protected]:~/sqlite_C# ls
backupdb.db gettable mydata.db selectdata.c sqlite3.h.gch
connect_db.c gettable.c output.txt selectdata_pro.c sqlite_test.c
createtable.c insertdata.c README.md sqlite3.h test_database.db
[email protected]:~/sqlite_C# vim output.txt
從得到的檔案來看,匯出的資料包含各欄位的內容,不包含欄位名!
sqlite-( TABLE == FILE )