gpt4 book ai didi

mysql - 将文件内容加载到表格的特定单元格中

转载 作者:行者123 更新时间:2023-11-29 14:36:53 25 4
gpt4 key购买 nike

Possible Duplicate:
Insert file contents into MySQL table's column

我想将文件的内容加载到表格的特定单元格中,或者更准确地说,我想更新特定的单元格,并且更新后单元格的内容应该是文件的内容。

最好通过命令行。我的第一次尝试说明了我想要实现的目标是;

mysql -p -u user -e "update my_table set body='`cat filename`' where id=x;" dbname

但是当然mysql在处理文件中的特殊字符时遇到了麻烦。或者我会同意 Perl 一行代码。

最佳答案

您也许可以使用 Charles Sprayberry 链接到上面的问题的答案中给出的 LOAD_FILE 函数。看起来像这样:

mysql -p -u user -e "update my_table set body=load_file('/path/to/filename') where id=x;" dbname

如果这对您不起作用(例如,由于权限问题或其他原因),那么您可以通过使用 Bash 和 sed 的功能来修复现有命令,以不同的方式解决您的问题,如下:

大多数特殊字符,例如换行符等,似乎在单引号字符串中都很好。唯一可能出现问题的字符是 ' (这将被解释为终止字符串)和 \ (这将被解释为引入转义序列),并且两者都其中可以通过前缀 \ 来寻址(例如,'\'''\\' 是表示 的字符串文字'\ 分别)。此 sed 脚本在任何 '\ 之前插入 \:

s/\('\|\\\)/\\\1/g

您可以像这样从 Bash 调用它:

sed 's/\('"'"'\|\\\)/\\\1/g' filename

(例如,如果文件名包含以下内容:

a \ b \ c
d ' e ' f

然后 sed 's/\('"'"'\|\\\)/\\\1/g' filename 将打印以下内容:

a \\ b \\ c
d \' e \' f

)。但是你不能只将上面的内容包装在 `...` 中,因为这些字符对于 Bash 来说也是特殊的,并且会造成混淆。 (我假设您使用的是 Bash?)相反,您需要使用 $(...),这是一个 Bash 表示法,相当于 `...` 除了它更好地处理像这样的各种细节。 (我建议始终使用 $(...) 而不是 `...`。)因此您的总体命令将是:

mysql -p -u user -e "update my_table set body='$(sed 's/\('"'"'\|\\\)/\\\1/g' filename)' where id=x;" dbname

关于mysql - 将文件内容加载到表格的特定单元格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8841642/

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