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リファレンスマニュアルに記載があるので参照してください。
0コメント