「mysqlimport」ユーティリティからの警告をどのようにリストしますか?


28

まず、MySQL自体からデータをロードするのではなく、コマンドラインツール「mysqlimport」を使用します。

これを使用してCSVをテーブルに直接ロードし、生成された警告を確認する必要があります。冗長またはデバッグを有効にした状態で警告を表示することはできません。何か案は?

(MySQL 5.0.5)

回答:


31

mysqlimportでは不可能ですが、代わりに次のことができます。

mysql --execute="LOAD DATA LOCAL INFILE '$WORKDIR/$table.csv' INTO TABLE $table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES (listOfColumnNames); SHOW WARNINGS"

listOfColumnNames適切な列のリストに置き換えます。

魔法は(前述のEduardのように)mysqlimportは警告を直接取得する方法を提供しないため、同じセッションでLOAD DATA INFILEコマンドとSHOW WARNINGSコマンドを一緒に実行することです。


甘い、ありがとう!エデュアルドのコメントを見た後、私はこのような声明を書き始めたばかりでした。ありがとう おかげで
瀬戸際

これtables.csvは、ローカルファイル(つまり、データベースのサーバー上にないファイル)で機能しますか?
ラフィカチャドリアン

私にとって次の作品は、最初にテーブルを作成してからmysql -u root --execute="LOAD DATA LOCAL INFILE 'c:\\crp\\blah3.csv' INTO TABLE blah3 FIELDS TERMINATED BY ','; SHOW WARNINGS" whateverdbnameegcsv_db 関連するstackoverflow.com/questions/14127529/…を
-barlop

そしてUTF8についてなどを追加することができますmysql> LOAD DATA LOCAL INFILE 'c:\\crp\\blah5.csv' INTO TABLE blah5 CHARACTER SET UTF8 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; SHOW WARNINGS;述べたようにstackoverflow.com/questions/4957900/...
barlop

問題は、終了コードが常にある0ため、コマンド出力を解析して、上記のスクリプトが作成されたときにインポートが成功したかどうかを確認する必要があることです(?)
pkaramol

5

他の人が言ったように、本当の問題はSHOW WARNINGSが機能するためには同じ接続セッションにいる必要があるということです。mysqlimportは、インポートが終了するとすぐにセッションから切断し、現在のバージョンでは警告のキャプチャを不可能にします。パッチを寄付する機会のようですね。:)


1

mysqlimportで警告を出力する方法も見つかりませんでした。しかし、mysqlimportは「LOAD DATA INFILE」以外は何もしないので、mysqlコマンドを使用してデータをインポートし、その後に「SHOW WARNINGS」が続くのはなぜですか?


ありがとう!いらいらするmysqlimportの種類が実際にうまく再生されない:/
brink

「警告を表示する」を使用します。「LOAD」の後のコマンド。
エデュアルドヴァーチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.