在Mac上,我有一个包含两列的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."
我需要将上面插入一行。我需要对格式化做些什么特别的事情吗?
对于一个特定的表,我希望每行都作为一个文件并以这种方式导入它们。我猜这是创建某种运行多个导入的批处理文件的问题。
修改
这正是我发布的语法,减去了一个标签,因为我使用的是逗号。我的帖子中缺少的换行符并没有表现得那么明显。无论如何,这会给出不匹配错误。
答案 0 :(得分: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),但是当我尝试它时似乎没有用。
答案 1 :(得分:0)
我正在将包含带有各种标点符号的长文本字段(实际上是关于编码的文章)的数据移动到SQLite中,我一直在尝试各种文本导入。
我在SQLite中创建了一个带有表格的数据库:
CREATE TABLE test (id PRIMARY KEY AUTOINCREMENT, textfield TEXT);
然后使用.dump进行备份。
然后我在原始的.dump文件中手动添加“CREATE TABLE”行下面的文本:
INSERT INTO test textfield VALUES (1,'Is''t it great to have
really long text with various punctaution marks and
newlines');
将任何单引号更改为两个单引号(将'更改为'')。请注意,需要手动添加索引号(我确信有一个AWK / SED命令可以自动执行)。将转储文件中“序列”行中的自动增量编号更改为您添加的最后一个索引编号上方的一个(我在前面没有SQLite给您确切的行,但它应该是显而易见的。)<登记/> 使用新文件,我可以对数据库进行恢复
答案 2 :(得分:0)