2009-01-18 83 views
4

在Mac上,我有兩列,一個是在SQLite表的自動遞增txt文件:如何將文件導入sqlite?

, "mytext1" 
, "mytext2" 
, "mytext3" 

當我嘗試導入該文件,我得到一個數據類型不匹配錯誤:

.separator "," 
.import mytextfile.txt mytable 

應該如何txt文件可以構成它使用的自動增量?

而且,我怎麼在文本輸入,將有換行符?例如:

"this is a description of the code below. 
The text might have some line breaks and indents. Here's 
the related code sample: 

foreach (int i = 0; i < 5; i++){ 

    //do some stuff here 

} 

this is a little more follow up text." 

我需要將上面的插入到一行中。有什麼特別的我需要做的格式?

對於一個特定的表,我想讓我的每行作爲一個文件,並將其導入的方式。我猜測這是創建一些運行多個導入的批處理文件的問題。

編輯

這正是因爲我使用的是逗號我張貼的語法,減去一個標籤。在我的文章中缺失的換行符並沒有使它顯而易見。無論如何,這給出了不匹配的錯誤。

回答

9

我一直在尋找同樣的問題。貌似我發現你的問題的第一部分的answer - 有關文件導入的表ID字段。

所以,是的,創建一個沒有ID的臨時表,然後將其導入到其中,然後執行insert..select將其數據複製到目標表中。 (從mytextfile.txt中刪除前導逗號)。

-- assuming your table is called Strings and 
-- was created like this: 
-- create table Strings(ID integer primary key, Code text) 

create table StringsImport(Code text); 
.import mytextfile.txt StringsImport 
insert into Strings (Code) select * from StringsImport; 
drop table StringsImport; 

不知道如何處理換行符。我讀過一些提到,在進口的CSV模式將做的伎倆(.mode CSV),但是當我嘗試它似乎沒有工作。

+0

我還沒有得到它的工作。我猜測唯一的辦法是創建一個桌面應用程序。 – 4thSpace 2009-01-26 21:09:09

0

我正在使用各種標點符號(它們實際上是編碼方面的文章)將包含長文本字段的數據轉移到SQLite中,並且我一直在試驗各種文本導入。

我SQLite中創建了一個數據庫表:

CREATE TABLE test (id PRIMARY KEY AUTOINCREMENT, textfield TEXT); 

然後做一個備份與使用.dump。任何單引號

INSERT INTO test textfield VALUES (1,'Is''t it great to have 
        really long text with various punctaution marks and 
      newlines'); 

更改爲兩個單引號(變化'到‘’):

我然後手動在所得的使用.dump文件添加下面的「CREATE TABLE」行中的文本本身。請注意,索引號需要手動添加(我確定有一個AWK/SED命令可以自動完成)。將轉儲文件中「序列」行中的自動增量編號更改爲您添加的最後一個索引編號之上的自動增量編號(我沒有SQLite在我面前提供確切的行,但它應該很明顯)。
隨着新文件,我可以然後恢復到數據庫