カテゴリー : MySQL

MySQLでコマンドラインからデータをインポートしたい

Webサービスを新しいサーバーに移す必要があり、DBの移行を行った際のメモ。

まずはデータベースを作成します。

# mysql -u root -p

mysql> create database IF NOT EXISTS db_name;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on db_name.* to db_user@localhost identified by 'hogehoge';
Query OK, 0 rows affected (0.00 sec)

db_nameがデータベース名、db_userがユーザー名、hogehogeがパスワードです。

よくLinuxのコマンドラインからmysqlコマンドを使ってSQLを流し込んでいるので、
この後に同じようにデータを流し込もうとしたら以下のようなエラーが出て「ん?」となりました。

# mysql -u db_user -p < db_dump.sql
ERROR 1046 (3D000) at line 28: No database selected

データベースが指定されていない・・・。確かに。
コマンドラインから流し込む場合に、どう指定するんだったっけ?となり調べました。

# mysql -u db_user --default-character-set=utf8 -p db_name < db_dump.sql

一番後ろにデータベース名を書くだけでした・・・。
ついでに文字コードも指定しました。