sqlite-( TABLE == FILE )

來源:互聯網
上載者:User

標籤:

———————————————————

1、匯入 .import命令  ( FILE ==> TABLE)

———————————————————

sqlite>.import FILE TABLE    //Import data from FILE into TABLE

----------例:

目地:將data.txt 中的資料內容匯入到test_database.db資料庫的table_im表中。

  • 我先查看data.txt文本中的內容

  • 開啟資料庫檔案,將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 )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.