0

我正在将数据从两个业务系统导入 MySQL。我编写了一些 bash 脚本来比较系统之间的差异,以便仅导入相关部分。现在我需要构建 SQL 查询,以便加载数据。我的主要问题是转义单引号,我在下面添加了应该转义它的代码部分,但不知何故,这只是有时这样做,不一致。我不明白...

TEXT=${PART[1]/\'/\\\'}

所以...有没有更好的方法/程序可以通过管道传输数据来逃避数据?绝对最好的解决方案是使用 MySQL 的load data infile混合on duplicate update,但如果我理解正确,那还没有实现。

4

3 回答 3

1

Bash 可能不是执行此操作的正确工具,但要使您的方法至少更正确一点,您可以尝试

TEXT=${PART[1]//\'/\\\'}

即使用双斜杠重复替换。

报价man bash

如果pattern以/开头,所有匹配的pattern都被替换为字符串

于 2012-05-28T13:15:06.300 回答
1

MySQLdb与 Python 一起使用并使用准备好的语句(参数化查询)。

请注意在select 语句和数据元组之间使用逗号而不是百分号。您想让模块而不是 Python 进行字符串替换。

c=db.cursor()
max_price=5
c.execute("""SELECT spam, eggs, sausage FROM breakfast
          WHERE price < %s""", (max_price,))
于 2012-05-28T13:22:56.420 回答
0
echo "aaa''bbb" | sed "s/'/\\\'/g"

aaa\'\'bbb
于 2012-05-28T13:24:55.697 回答