もくじ
エクセルを準備
まずは、インポートするためのエクセルを準備します。
仮に中身がこのようなデータとして話を進めます。
インポート先のテーブルを用意
- database名;
test_db
- table名;
sample
- カラム
- id
- nama
- age
エクセルにクエリを生成
D列に以下の関数を入力します。id
は自動採番(autoincrement)になっている想定で省いています。
="INSERT INTO sample(name,age) VALUES('"&B2&"',"&C2&");"
するとクエリが生成されます。
このとき、ダブルクォーテーションなどの記述がややこしいので間違えないようにしましょう。今回の例でいうとage
は数字なのでクォーテーションがいりません。
しかしカラムが文字列であればクォーテーションが必要になってきます。age
カラムを文字列のaddress
カラムに変更してみます。
="INSERT INTO sample(name,age) VALUES('"&B2&"','"&C2&"');"
数字
文字列
MySQLでクエリ実行
まずはデータベースを選択します。
mysql> use test_db;
データベースを選択していないと、エラーが返ってくると思います。
ERROR 1046 (3D000): No database selected
もしエラーが出たら、into tableの後のテーブル名の指定時にデータベース名.テーブル名
とするか、先にuse [データベース名];
を実行しておきます。今回は後者で進めます。
あとは先ほど生成したクエリを実行するだけです。
mysql> INSERT INTO sample(name,age) VALUES('相川',12); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO sample(name,age) VALUES('井上',33); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO sample(name,age) VALUES('内田',43); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO sample(name,age) VALUES('江本',23); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO sample(name,age) VALUES('大木',42); Query OK, 1 row affected (0.00 sec)
これで投入完了です。
確認
mysql> select * from sample; +----+--------------+------------+------------+------------+ | id | name | age | created_at | updated_at | +----+--------------+------------+------------+------------+ | 1 | 相川 | 12 | NULL | NULL | | 2 | 井上 | 33 | NULL | NULL | | 3 | 内田 | 43 | NULL | NULL | | 4 | 江本 | 23 | NULL | NULL | | 5 | 大木 | 42 | NULL | NULL | +----+--------------+------------+------------+------------+
完成!
まとめ
今回のようにインポートするデータが少なければこんなことしなくても…と思いますが、1000件、10000件ともなってくるとこのように生成しておけば、エクセルでコマンド列をコピーしてMySQLにペーストするだけなのでとても楽チンです。
注意点としては、セミコロン(;
)を忘れないようにしましょう。セミコロンがないと終了コマンドを認識してくれないのでコピペではうまくいかなくなります。