1
我试图读取包含很长单词列表的文本文件,并将它们及其长度插入数据库以供进一步分析。bash,在bash中的SQL语句中转义撇号
脚本我有工作,直到它到达与撇号的单词。我有什么目前:
#!/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
您切换到提供正确的库将参数传递到一个SQL语句,而不是试图建立基于字符串的陈述语言操作。 – chepner
是的,我可以使用PHP,但这样一个小的东西只能使用一次,但在一个非常大的单词列表(800k字),不会更快? –
首先,请删除您的管道和mysql命令,将您的SQL语句回显为标准输出。然后,在命令行上手动执行每个SQL语句(正确引用它),以便确定哪个语句失败(全部或仅部分),然后手动调试该语句。一旦你知道你生成的SQL语句出了什么问题,那么你可以问问如何在脚本中插入一个脚本,如果你无法弄清楚。 – Fred