15

MySQL サーバーに接続し、txt ファイルから値を挿入する bash スクリプトを作成したいと考えています。私はこれを書き留めました:

#!/bin/bash
echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;

しかし、次のエラーが表示されます。

1 行目のエラー 1136 (21S01): 列数が行 1 の値数と一致しません

エラーは私のtxtファイルにあると思いますが、多くのバリエーションを試しましたが、まだ成功する見込みはありません.

私のtxtファイルは次のようになります。

10.16.54.29 00:f8:e5:33:22:3f マルサラ

4

5 に答える 5

11

LOAD DATA INFILE追加する行が多数あると仮定すると、ステートメントではなく、おそらくステートメントが必要ですINSERT。ソースファイルはサーバー上にある必要がありますが、ここではそうです。

そんな感じ:

#!/bin/bash

mysql -uroot -ptest test << EOF

LOAD DATA INFILE 'test.txt'
    INTO TABLE tbl_name
    FIELDS TERMINATED BY ' ';

EOF

LOAD DATA INFILEドキュメントを読むとわかるように、多くのオプションがあります。

于 2013-08-01T15:01:12.260 に答える
5

3 つのパラメーター (IP、MAC、およびサーバー) を必要とする INSERT ステートメントで、値 "cat test.txt" を文字列としてデータベースに挿入しようとしているため、このエラー メッセージが表示されます。

最初にテキスト ファイルを読み取り、IP、MAC、およびサーバーの値を抽出してから、これらをクエリで使用する必要があります。

#!/bin/bash
echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('10.16.54.29', '00:f8:e5:33:22:3f', 'marsara');" | mysql -uroot -ptest test;
于 2013-08-01T15:03:04.163 に答える