我正在尝试导入一个以分号分隔的文本文件,其中每行以 CRLF 结尾。第一行包含字段,数据从第 2 行开始:
"Field1";"Field2"
"123";"Foo"
"456";"Bar"
Run Code Online (Sandbox Code Playgroud)
我尝试了以下操作,但失败并显示“input.csv:23:未转义的”字符”:
sqlite3.exe
sqlite> .separator ";"
sqlite> .mode csv MyTable
sqlite> .import input.csv MyTable
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?
谢谢。
对于sqlite,当要导入的数据可能包含双引号字符(")时,不要使用csv模式。读取每个CSV字段csv_read_one_field的代码会查找它,当找到它时,确保它被终止或期望它被引用。
将列分隔符更改为“;” 不会有帮助,因为该代码仍然会被执行。
另一方面,以 ascii 模式ascii_read_one_field读取每个字段的代码仅使用列和行分隔符来确定字段内容。
因此,使用 ascii 模式并将列和行分隔符设置为分号和行尾,如下所示:
*尼克:
sqlite> .mode ascii
sqlite> .separator ";" "\n"
sqlite> .import input.csv MyTable
Run Code Online (Sandbox Code Playgroud)
视窗:
sqlite> .mode ascii
sqlite> .separator ";" "\r\n"
sqlite> .import input.csv MyTable
Run Code Online (Sandbox Code Playgroud)
但是,这不会删除数据周围的双引号;它们被视为您数据的一部分。
归档时间: |
|
查看次数: |
5807 次 |
最近记录: |