MySQL mysqlimportコマンド 複数のCSVファイルを1テーブルへインポートする

まずは、1つのCSVファイルをDATA LOADコマンドを使ってMySQLの1テーブルへインポートする。


対象となるCSVファイル: /output/testdata.csv

対象となるMySQL データベース.テーブル: testdb.tests


①ローカルPCからMySQL(サーバー)へログイン

> mysql -uユーザー名 ーhホスト名(アドレス)-p

②DATA LOADコマンド実行(ローカルのファイルをインポートするので LOCAL を忘れずに!!)

mysql> LOAD DATA LOCAL '/output/testdata.csv' INTO TABLE testdb.tests FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' IGNORE 1 LINES;


次に、mysqlimportコマンドを使って、複数のCSVファイルをMySQLの1テーブルへインポートする。


対象となるCSVファイル: /output/tests.01.csv, tests.02.csv, tests.02.csv, tests.04.csv, tests.05.csv

対象となるMySQL データベース.テーブル: testdb.tests


※ --local or -L を忘れずに!!

> mysqlimport -hホスト名(アドレス)-Pポート番号 -uユーザー名 -p --fields-terminated-by=',' --fields-enclosed-by='"' --fields-escaped-by='\\' --lines-terminated-by='\n' --ignore-lines=1 --local 'testdb' 'tests.01.csv' 'tests.02.csv' 'tests.03.csv' 'tests.04.csv' 'tests.05.csv'


複数ファイルの指定はmysqlimportコマンドの構文にある通り。

構文:mysqlimport [options] db_name textfile1 [textfile2 ...]


’tests.*’ などとワイルドカードが使えると良いと思い試してみましたが、当方環境ではエラーとなりました。


tests.01.csv~tests.05.csvを結合して1ファイルにしてDATA LOADコマンドや、mysqlimportコマンドでといった方法もありますが、tests.02.csv~tests.05.csvのヘッダー行を削除してから結合するなど手間もあり、複数ファイルをそのままインポートできる方が便利です。


他、mysqlimportコマンドの注意点としては、インポートしたいファイル名はテーブル名.~を付けること、。tests.txt,tests.textおよび tests と名付けられたファイルはすべて tests と名付けられたテーブルにインポートされます。詳しくはMySQLリファレンスマニュアルに記載があるので参照してください。



Han The World

お出かけ、食、読書、システム構築やプログラミングに関する徒然なるブログ

0コメント

  • 1000 / 1000