非常に長い単語のリストを含むテキストファイルを読み込み、さらに分析するために、それらの長さと長さをデータベースに挿入しようとしています。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
オペレーション。 – chepner
さて、私はPHPを使用することができましたが、そのような小さなものを一度だけ使用することはできますが、単語の大量のリスト(800kワード)で高速化することはありませんか? –
まず、pipeとmysqlコマンドを削除して、SQL文を標準出力にエコーしてください。そして、どのSQL文が失敗したのか(全部または一部のみ)を識別し、その文を手動でデバッグするために、コマンド行で手動で各SQL文を実行します(適切に引用します)。生成したSQL文が何か問題があることがわかったら、それを把握できない場合にスクリプトをどのように入れるのかを尋ねることができます。 – Fred