Sqlite - 如何转义双引号?

Sqlite - how to escape double quotes?

我在导入 sql 精简版时遇到问题。 我正在将 table 从 Sql 服务器导出到一个以 UTF-8 编码的平面文件中。然后尝试将平面文件导入 sqlite 数据库。数据库采用 UTF-8 编码。

这些行很麻烦(制表符分隔,行以 CRLF 结尾):

ID  w   posid   def
1234    bracket 40  "(" and ")" spec...

1234    bracket 40  Any of the characters "(", ")", "[", "]", "{", "}", and, in the area of computer languages, "<" and ">".

错误:

未转义的 " 字符

我试过用双引号替换引号",还是不行。

导入设置:制表符分隔符

.分隔符“”

.import data.txt 单词

sql站点Table架构:

CREATE TABLE words (ID integer NOT NULL, w TEXT  NOT NULL, posid integer NOT NULL, def TEXT NOT NULL);

更新: 不知何故,在 Sql 服务器的 def 字段的开头添加一个散列有效:

更新单词集 def = '#' + def

不知道为什么会这样。这有效,但它在字段中添加了不需要的字符。

事实证明,当有换行符、引号或逗号时,导入会出错。

一种解决方案是将这些字符替换为一些其他字符序列或字符代码(例如 char(1), char(2)...),并确保字段不包含这些序列或代码,在您 运行 导入之前。例如,将引号替换为 --,然后导入,然后再次将 -- 替换为引号。我有另一个 table,其中一些文本字段有换行符,这个解决方案似乎有效。

before import:

update [table] set comment = REPLACE(comment, CHAR(13), '-*-')
update [table] set comment = REPLACE(comment, CHAR(10), '%-$-%')
update [table] set comment = REPLACE(comment, '"', '%-&-%')

after import:

update [table] set comment = REPLACE(comment, '-*-', CHAR(13))
update [table] set comment = REPLACE(comment, '%-$-%', CHAR(10))
update [table] set comment = REPLACE(comment, '%-&-%', '"')

要在不更改输入数据的情况下执行此操作,请使用 ascii 模式并将列分隔符设置为制表符,将行分隔符设置为 CRLF。

.mode ascii
.separator "\t" "\r\n"

请参阅我的回答 to this other question 以了解原因。