私は3000個のcsvファイルを区切って区切り、それぞれの名前はデータを収集したサーバの名前になっています。データ私が試した個々のファイルについては複数のcsvfilesをmysqlにインポートする方法
:。。
mysql -uuser -ppassword --local-infile mydatabase -e "LOAD DATA LOCAL INFILE '/root/downloads/test/reports/mytestcsvfile.csv' INTO TABLE results FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES FIELDS FIELDS ESCAPED BY '\' "
と、これは、すべてのデータ要素は引用符で囲まれていることを除いて正常に動作します私は
ENCLOSED BY '"'
を追加する場合は、「中そのパラメータはインポート作業を停止し、>プロンプトを表示します。
私は脱出した場合、「
ENCLOSED BY '\"'
はその後、私はエラーを取得すると:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FIELDS ENCLOSED BY '"' FIELDS ESCAPED BY '\'' at line 1
私のようなものに全体の多くを囲む必要があります:
#!/bin/bash
FILES= /root/downloads/smtptest/reports/
for f in $FILES
do
echo "processing $f..."
mysql -uuser -ppassword --local-infile mydatabase -e "LOAD DATA LOCAL INFILE '/root/downloads/test/reports/$f' INTO TABLE results FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 LINES FIELDS FIELDS ESCAPED BY '\' "
done
どうやってインポートを実行し、 "。 Mysqlimportは、ファイル名に基づいてテーブルにインポートする際に除外されるように見えます。私は私が最初にこれを実行するために抱えている現時点では、各ファイルのためにそれを実行できるように
そして...
:
for f in file*.csv; do echo ":" $f ":"; sed -i "s/^/\"$f\",/" "$f"; done
これは、各サーバー名(ファイル名)を追加各ファイルの各行の先頭がデータベース内のレコードの一部になるようにします。これを行うよりエレガントな方法はありますか?