我正在将 sqlite3 数据库转换为 mysql。
我有一个很好的 sed 命令文件,它改变了 AUTOINCREMEMT 和其他需要的东西,但我坚持最后一个:双引号。
sqlite3 转储格式:
CREATE TABLE "products" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255),
"desc" varchar(255) );
INSERT INTO "products" VALUES(1,'Flux Capacitor',
'This is the "real" thing.\nPromise!')
对于第一个语句,我可以用反引号替换所有双引号,mysql 会很高兴。
但是,我的产品信息在数据中有双引号。我怎样才能排除这些被替换?我试图只用占位符替换那些双引号,然后我可以替换所有其他双引号,然后我可以将占位符改回来,但我的 regex-fu 没有达到标准。
据我所知:
/"[^"]*"/s
...匹配双引号文本,但我不知道如何限定只匹配单引号内的双引号。