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

執筆者:

関連記事

sqlserver

「.NET」と「ASP.NET」からのSQL Serverへのコネクションを確認する(1)

INDEX1 コネクション数と状態を確認する2 コネクションプールとは3 コネクションを制御する設定 コネクション数と状態を確認する SQLSERVERのコネクション数を確認するには下記のSQLを実行 …

sqlserver

SQL Server 構成マネージャーを起動する

SQL Server 構成マネージャーがない。 何故か、コンピューターの管理の中に入っていた。 また検索窓からは以下のように検索できる。 ・SQL Server 2014 の場合   SQLServe …

mysql

MySQLのexists

exists自体はほとんどのSQL自体に実装されていると思われます。 しかし、使用方法を誤るとレスポンスに大きな影響を与えてしまします。 副問合せであるexists内部で、集問い合わせのキー列と結合し …

sqlserver

SQL Server Browser を起動する方法

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

sqlserver

SQLSERVER saでログインできるようにする

私はsaも設定しておくべきだと思います。 そこでsaログインするための確認ポイントです。 INDEX1 ログインを有効にする2 サーバー認証の設定3 名前付きパイプ ログインを有効にする Manage …