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