猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

DataBase MySQL

MySQL load dataでcsvをインサートする

投稿日:2013年2月6日 更新日:

かなり高速でinsertしてくれます。

使い方

MySQLにログインして、データベースを指定して実行します。

mysql> use [データベース]
mysql> load data local 
infile '/xxx/test.csv' 
into table [テーブル名] 
fields terminated by ',' 
enclosed by '"' 
lines terminated by '\n';

ERROR 1045

ERROR 1045 (28000): Access denied for user ‘test’@’localhost’ (using password: YES)
の場合はmysqlのユーザーにファイル権限がありません。

のようなエラーがでる場合があります。

①MySQLのファイル権限を確認します。(linuxではありません)

mysql> select user,file_priv from mysql.user;
+--------+-----------+
| user   | file_priv |
+--------+-----------+
| root   | Y         |
| test   | N         |
+--------+-----------+
2 rows in set (0.00 sec)
もしなければ追加します。
mysql> grant file on *.* to test@localhost;
Query OK, 0 rows affected (0.00 sec)

②linuxのディレクトリとファイルのアクセス権限を確認します

#chmod 755 test.csv
だめらならファイルの入っているディレクトリにも
#chmod 755 dir

③ローカルキーワードの確認
データベースサーバー上にcsvファイルがある場合でもlocalキーワードが必用です。
mysql> load data local infile ‘/xxx/test.csv’ into table [テーブル名] fields terminated by ‘,’ enclosed by ‘”‘ lines terminated by ‘\n’;

成功したら下記のように表示されるはずです。

mysql> use [データベース]
mysql> load data local infile '/xxx/test.csv' into table soumu fields terminated by ',' enclosed by '"' lines terminated by '\n';
Query OK, 1800 rows affected (0.04 sec)
Records: 1800  Deleted: 0  Skipped: 0  Warnings: 0

データは追加されていくので、同じファイルを何度もインポートしていると、キーが重複してSkippedが発生するかもしれません。

[補足]insertを高速にする

複数のinsert分をまとめることで早くなります。

mysql>INSERT INTO table (id,name) VALUES(1,'本'),(2,'たまご'),(3,'猫');

Gooleアドセンス用336

Gooleアドセンス用336

-DataBase, MySQL

執筆者:

関連記事

mysql

CentOS6.4にMySQL5.6をインストールする

INDEX1 RPMのダウンロード2 tarの解凍3 rpmをyumでインストール4 サービス名が違う?5 mysql_secretにrootの初期パスワードはある6 mysql_secure_ins …

mysql

MySQLのエラー、クエリ、スロークエリのログ

全て /etc/my.cnf の [mysqld] に追記してサーバーを再起動すれば出力されるようになります。 エラーログは開発時には警告も出力しておけばよいでしょう。 クエリログは全てのSELECT …

mysql

MySQLのwait_timeout

データベースやWebサーバーは、実際に稼働してから問題が多発します。 データ量が増えてきたり、アクセスが増えてきたらまずレスポンスの問題が発生するでしょう。 経験のあるエンジニアがいれば、十分なテスト …

sqlserver

SQLSERVER「Login failed for user ‘xxxxxxx’. 理由: 指定された名前に一致するログインが見つかりませんでした」

Windows認証でAdministratorを指定しているのにログインできない。 そんな場合は以下の手順でAdministratorユーザーを作成します。 INDEX1 起動時のパラメーターの変更2 …

sqlserver

SQL Server Browser を起動する方法

SQL Server構成マネージャーより起動できるはずが、なぜか開始も停止もできない。 コントロール パネル > システムとセキュリティ > 管理ツール > サービス を見ると、SQL Server …