我正在尝试阅读包含很长单词列表的文本文件,并将它们及其长度插入数据库以供进一步分析。
我的脚本一直工作,直到它到达带有撇号的单词。我现在拥有的是:
#!/bin/bash
inputfile="words.txt"
cat $inputfile | while read word; do
echo "INSERT INTO words (word, word_size) VALUES ('$word', CHAR_LENGTH('$word'));"
done | mysql -u root -p crossword
给出的错误是:
ERROR 1064 (42000) at line 170: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's', CHAR_LENGTH('abbey's'))' at line 1
答案 0 :(得分:0)
你需要在mysql中通过'
转义''
。试试这个:
#!/bin/bash
inputfile="words.txt"
cat $inputfile | while read word; do
echo "INSERT INTO words (word, word_size) VALUES (\"${word/\'/''}\", CHAR_LENGTH(\"${word/\'/''}\"));"
done | mysql -u root -p crossword
答案 1 :(得分:0)
又快又脏:)
'
应该转发为\'
或''
(双撇号)。
以下示例使用\'
。
sed "s/'/\\\'/g;s/.*/INSERT INTO words (word, word_size) VALUES ('&', CHAR_LENGTH('&'));/" < words.txt | mysql -u root -p pass
Ps:但是,请仔细检查@ chepner的评论:)