DBからエクスポートしたデータ、バックアップファイル、要するにdumpやsqlファイルを別のDBへインポートする方法です。
mysqlの外から実行
-- 取り込みたいデータファイルと同じ場所まで移動して実行
$ mysql -u [MySQLのユーザ名] -p db_name < example.sql
-- 取り込みたいデータファイルのパスを指定して実行
$ mysql -u [MySQLのユーザ名] -p db_name < /Users/user_name/Desktop/example.sql
もう少し詳しく解説
GUI(phpMyAdminなどの管理画面)で入れるやり方もありますが、ここではコマンドライン上でデータを読み込む方法を記載しています。当方の実行環境は以下の通りです。
- MySql: 5.7.26
- phpMyAdmin: 4.9.3
- MAMP: 5.6
- macOS: Mojave (10.14.6)
$ mysql -u [MySQLのユーザ名] -p db_name < example.sql
db_name
の部分にはデータベース名を入力し、example.sql
の部分には取り込みたいデータのパスを指定します。そのためDBが既に作成済みであることが前提となります。まだ作成していない場合はDB作成後に実行してください。
パスは、今いる場所から見たパスになるので、mysql -u xxx -p db_name < example.sql
のようにファイル名だけ指定して実行させるとしたら、そのファイルがある場所まで移動すれば可能ということになります。
例えばデスクトップにあるダンプやsqlをインポートすると仮定すれば、cd Desktop/
のように移動してから mysql -u xxx -p db_name < example.sql
を実行します。
ファイルがある場所以外(今回はデスクトップ以外の場所)から実行したい場合は、 mysql -u xxx -p db_name < /Users/user_name/Desktop/example.sql
のように絶対パスを指定してあげれば大丈夫です。
以上が、mysqlのコマンドラインによる標準入力でdumpファイルを指定する方法でした。
ただしファイルサイズが大きすぎると、時間がかかりすぎるかエラーになってしまうこともあり、そういう場合はコマンドライン上でDBにログインした後に、sourceコマンドでMySQL内部からファイルを読み込むことも可能です。
mysqlの中から実行
/* MySQLへログイン */
$ mysql -u [MySQLのユーザ名] -p
/* (中略) */
/* 使用するDB名を指定 */
mysql> use db_name
/* 読み込みたいファイルのパスを指定 */
mysql> source /Users/user_name/Desktop/example.sql
パスの確認方法
余談ですがファイルのパスを確認したい場合は以下のような方法があります。
Macのファインダーからパスを確認
- ファインダーで該当のdump/sqlファイルを選択
- ファインダー画面下のパスバーを確認
- パスバー末端のファイル名を右クリックまたは control + クリックしてパス名をコピー
(パスバーが見えていない場合は、表示メニューから「パスバーを表示」を選択)
Visual Studio Code などのエディタからパスを確認
自分はエディタにVSCodeを使用していますが、エディタ上からファイルパスを確認する方法もあります。
- VSCodeで該当のファイルを開くか、親となるディレクトリを開く
- ファイル名の記載があるタブで右クリックまたは control + クリックしてパス名をコピー
- または、画面左側の一覧から該当のファイルを右クリックや control + クリックでパス名をコピー
参考URL
MySQLのデータベースをまるっとお引越し。 (エクスポート/インポート)
巨大ファイルのインポートにはmysqlのsourceコマンドを
MAMP で大きい MySQL ファイルをインポート/エクスポートする方法
【MAMP】コマンドで .sql ファイルをインポートする方法(Windows & Mac対応)