2009-01-18 56 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在我面前提供确切的行,但它应该很明显)。
随着新文件,我可以然后恢复到数据库