ホームページ >データベース >mysql チュートリアル >Bash スクリプトから MySQL にデータを挿入するときに発生する「列数が値数と一致しません」エラーを修正する方法
MySQL サーバーに接続し、テキスト ファイルからデータを挿入することを目的とした Bash スクリプトを作成しました。ただし、スクリプトの実行中にエラーが発生しました。特に:
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
問題はコマンドの構造にあります:
echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;
このコマンドは基本的に、 test.txt ファイルの内容全体を単一の値としてテスト テーブルに追加します。テスト テーブルには 3 つの列 (IP、MAC、SERVER) があるため、値の数 (1) と列の数 (3) の間に不一致が生じます。
この問題を解決するには、次の手順を実行します。テキスト ファイルの各行をデータベースに挿入される個別の値のセットとして扱うように Bash スクリプトを変更する必要があります。スクリプトの修正版は次のとおりです:
#!/bin/bash inputfile="test.txt" cat $inputfile | while read ip mac server; do echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('$ip', '$mac', '$server');" done | mysql -uroot -ptest test;
この修正されたスクリプトでは:
ファイルをストリーミングすることによって読み取りと MySQL コマンドの実行を別々に行うことで、テキスト ファイルの各行がデータベース内の個別の行として正しく挿入されていることを確認できます。
以上がBash スクリプトから MySQL にデータを挿入するときに発生する「列数が値数と一致しません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。