gpt4 book ai didi

用于替换数据库插入语句中的引号的正则表达式

转载 作者:行者123 更新时间:2023-12-03 18:41:13 25 4
gpt4 key购买 nike

我正在将 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

...匹配双引号文本,但我不知道如何限定只匹配单引号内的双引号。

最佳答案

我会更改 MySQL 以接受双引号作为标识符分隔符。这是标准的 SQL 行为,您可以使用 SQL 模式使 MySQL 以这种方式运行:

mysql> SET SQL_MODE = ANSI;

或者更具体地说:
mysql> SET SQL_MODE = ANSI_QUOTES;

然后 MySQL 应该了解您的数据转储。

有关详细信息,请参阅“ Server SQL Modes”。

关于用于替换数据库插入语句中的引号的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1313726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com