MySQLのコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?


2035

.sqlからのエクスポートを含むファイルがありますphpMyAdmin。コマンドラインを使用して別のサーバーにインポートしたい。

私が持っているWindows Server 2008の R2のインストールを。.sqlファイルをCドライブに配置し、このコマンドを試しました

database_name < file.sql

動作していません。構文エラーが発生します。

  • このファイルを問題なくインポートするにはどうすればよいですか?
  • 最初にデータベースを作成する必要がありますか?



7
これらの重複した男とは何ですか?これは確かに、独自の目的に役立つ質問です
バレンティーノ・ペレイラ

@ValentinoPereiraは、重複する男を決定する前に元の質問の日付を確認しましたか
AZinkey

再現可能な例を共有できますか?database < file.sql私にはコマンドのようには見えません。構文エラーが表示された場合は、共有してください
Nico Haase

回答:


3774

試してください:

mysql -u username -p database_name < file.sql

MySQLオプションを確認します

注1: SQLファイルの完全パスを使用することをお勧めしますfile.sql

注-2:-R--triggersを使用して、元のデータベースのルーチンとトリガーを保持します。デフォルトではコピーされません。

注3インポートする前に、mysqlから(空の)データベースがまだ存在せず、エクスポートされたSQLに含まれていないCREATE DATABASE--no-create-dbまたは-nオプションでエクスポートされている)場合、データベースを作成する必要があります。


2
Toadのようなプログラムからファイルを実行するとエラーは発生しませんが、コマンドラインから実行すると前述のエラーが発生します
Jaylen

110
はい、それをインポートする前に、mysqlから(空の)データベースがまだ存在しない場合は作成する必要があることに注意してください。
Skippy le Grand

17
Yups、(デシベルは、以前に存在しない場合)のようなので、MySQLのコンソールから、空のデータベースを作成することを忘れないでください:CREATE DATABASE db-name;
カシム

3
バックアップファイルに「use 'original_db'」が含まれていないことを確認してください。新しいDBへの復元を指定しましたが "mysql new_db <dump.sql"ですが、sqlダンプファイルにそれが含まれていて、ライブDBを上書きしました。指定されたDBを使用するように強制するオプションがあるかどうかは不明ですが、SQLファイルの「use 'original_db'」を無視してください
Shaakir

7
@Joe、はい、「-p」と「password」の間にスペースがある場合、「password」はデータベース名であると見なされます。または、パスワードなしで「-p」と入力すると、Enterキーを押すとパスワードの入力を求められます。
NotJay 2017

765

mysqldumpの一般的な用途は、データベース全体のバックアップを作成することです。

shell> mysqldump db_name > backup-file.sql

次のようにして、ダンプファイルをサーバーに読み込むことができます。

UNIX

shell> mysql db_name < backup-file.sql

Windowsコマンドプロンプトでも同じです。

mysql -p -u [user] [database] < backup-file.sql

パワーシェル

C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql"

MySQLコマンドライン

mysql> use db_name;
mysql> source backup-file.sql;

@マイクmysql>コマンドラインで起動しようとしていますか?代わりにシェルを使用する必要があります。
vladkras 2013

シェルをどのように使用しますか?Windows Server 2008でmysql5.6を使用しています
Jaylen 2013

Windows PowerShellを使用してMySQL db_name <file.sqlと入力すると、次のエラーが発生します。 '<'演算子は将来の使用のために予約されています
Jaylen

31
特にエンコーディングを制御したい場合は、>を使用してmysqldump出力をファイルにリダイレクトする際に注意してください。代わりに、エンコードがシェル/ OSによって制御されないように、おそらく--result-fileパラメーターを使用する必要があります。
Bernard Chen

1
そうです、しかし...なぜmysqlPowershellから直接実行しないのですか?
Charles Wood

330

巨大なファイルのインポートにかかる時間について:MySQLのデフォルト設定がであるため、最も重要なのは、より多くの時間がかかることですautocommit = true。ファイルをインポートする前にこれをオフに設定し、インポートがgemのように機能することを確認する必要があります。

次のことを行うだけです。

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

5
インポートに使用されるmysqlコマンドの単一のコマンドラインでそれを行う方法はありますか?
Volomike、2015年

ベストアンサーinho。それはsource私が忘れていたコマンドでした。私たちのほとんどは、他のコマンドの中でスタンドアロンコマンドとしてログインしているときにこれを実行したいと考えています。GoogleSerpsの上部にある標準のログイン>注入>ログアウトワンライナーではありません。
davidkonrad 2016年

19
これが最良の答えであることに同意します。そのautocommit=0部分はスピードの点で世界に差をつけました。
aexl 2016年

2
autocommit=0大きなファイルで動作しますか?8GBのSQLファイルのように。
初心者の

3
常にオフにする必要はありませんautocommit。エディターでデータベースダンプを確認することは価値がありますSET autocommit=0;
hashchange、2018

127

すべての答えの中で、上記の問題については、これが最良の答えです。

 mysql> use db_name;
 mysql> source file_name.sql;

上記のアドバイスは、dbがすでに存在するというエラーで失敗しましたが、これは機能しているようです
luky

74

次のコマンドを使用して、コマンドラインからSQLをインポートできます。

mysql -u username -p password db_name < file.sql

たとえば、ユーザー名がrootでパスワードがの場合ですpassword。また、データベース名はbankで、SQLファイルはbank.sqlです。次に、次のようにします。

mysql -u root -p password bank < bank.sql

SQLファイルの場所を覚えておいてください。SQLファイルがDesktopフォルダー/ディレクトリにある場合は、デスクトップディレクトリに移動して、次のようなコマンドを入力します。

~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql

そして、あなたがProjectディレクトリにいて、SQLファイルがDesktopディレクトリにある場合。Projectディレクトリからアクセスしたい場合は、次のようにします。

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql

22
-pとの間にスペースがあってはなりませんpassword
Ejaz '19

ジャップ。これは機能しません。正解は次のようになりますmysql -u root -p"password" bank < bank.sql
アーミン

4
なぜあなたは単に一行で答えることができないのですか? mysql -u username -ppassword db_name < file.sql
2015

6
これはこの質問/回答とはまったく関係ありませんが、重要なデータベースで作業している場合は、同じコマンドでパスワードをプレーンテキストで入力しないことをお勧めします。コマンドの一部としてパスワードを指定しないと、安全に入力できるパスワードの入力を求められます
asgs

3
特にのため.bash_history
Neil Chowdhury

64

スキーマにインポートする最も簡単な方法:

mysqlにログインし、以下のコマンドを発行します。

mysql> use your_db_name;

mysql> source /opt/file.sql;

5
これは、multilpe dbが含まれているダンプの「use」コマンドなしでも機能します
Hayden Thring

1
別の名前のデータベースからダンプをインポートしようとしましたが、構造は同じですが、作成者が選んだ正しい答えが機能しませんでした。ダンプファイルにデータベースにちなんだ名前の新しいデータベースが作成されました。この答えは、右ここで私は、感謝の男を望んでいた
Wuelberカスティージョ

1
すごい!私が探していたものは本当に素晴らしいです!
Sergei Zahharenko、2018年

2
これは、他の回答よりもはるかに優れたスクリプト実行も監視します
refex

61

すでにデータベースがある場合は、次を使用してインポートします dumpまたはsqlファイルします。

mysql -u username -p database_name < file.sql

MySQLで関連するデータベース(空)を作成する必要がない場合はMySQL、ターミナルまたはコマンドで次のコマンドを実行して、最初にコンソールにログオンします。

mysql -u userName -p;

プロンプトが表示されたら、パスワードを入力します。

次に、データベースを作成して使用します。

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

次に、sqlまたはdumpファイルをデータベースにます

mysql> source pathToYourSQLFile;

注:dumpまたはsqlファイルが存在する場所に端末がない場合は、上記の相対パスを使用してください。


あなたの答えは、私のようなMySQL初心者のための根本的な解決策でした:1.データベースが存在しない場合は作成します。2.データ/メタデータをインポートするには、作成したデータベースをソースファイルに指定します。
Sumanth Lazarus

60
  1. MySQLコマンドラインを開きます
  2. mysql binディレクトリのパスを入力して、 Enter
  3. binmysqlサーバーのフォルダー内にSQLファイルを貼り付けます。
  4. MySQLでデータベースを作成します。
  5. SQLファイルをインポートする特定のデータベースを使用します。
  6. タイプsource databasefilename.sqlEnter
  7. SQLファイルが正常にアップロードされました。

2
mysql binディレクトリのパスをypeして押します
Ramesh Pareek

46

私のために働いた解決策は以下の通りです:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;

これは、SQLファイルを適切な/ binディレクトリビューウィンドウエクスプローラーに配置した後、MySQLコマンドラインクライアントを使用して動作しました。ありがとう
クレウィス

3
少し遅いですが、間に止まらず、MySQLサーバーがなくなったとは言いません。
Jaskaran Singh

39

データベースをSQLファイルにダンプするには、次のコマンドを使用します。

mysqldump -u username -p database_name > database_name.sql

SQLファイルをデータベースにインポートするには(SQLファイルと同じディレクトリにいることを確認するか、ファイルへの完全パスを指定してください)、次のようにします。

mysql -u username -p database_name < database_name.sql

37

MySQL実行可能ファイルがあるディレクトリに移動します。-uユーザー名と-pパスワードを要求するには:

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql

5
あなたの意図にいくつかの説明を加えるとき、それはOPとさらなる質問にとってより役立つと思います。
レポーター

これは、Windows環境変数でmysql.exeが定義されている場合にのみ機能します。そうでない場合は、mysql.exeファイルへのすべてのパスを入力する必要があります。そして、あなたの構文は間違っています。例: "D:\ WAMP \ binに\ mysqlの\ mysql5.5.8 \ binに\ mysql.exe -u YOUR_USERNAME -p DB_NAME <filename.sqlに"詳細:wpy.me/en/blog/...
wappy

31

以下に示すようにgzip圧縮(圧縮)ファイルをロードすることもできることは言及する価値があると思いzcatます。

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name

28

単一のデータベースをインポートするには、次のコマンドを使用します。

mysql -u username -p password dbname < dump.sql

複数のデータベースダンプをインポートするには、次のコマンドを使用します。

mysql -u username -p password < dump.sql


17

一度に複数のSQLファイルをインポートするには、これを使用します。

# Unix-based solution
for i in *.sql;do mysql -u root -pPassword DataBase < $i;done

単純なインポートの場合:

# Unix-based solution
mysql -u root -pPassword DataBase < data.sql

以下のためのWAMP

#mysqlVersion replace with your own version
C:\wamp\bin\mysql\mysqlVersion\bin\mysql.exe -u root -pPassword DataBase < data.sql

XAMPPの場合:

C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql

16

.sqlファイルが含まれている場合は、コマンドライン上のデータベースの名前を指定する必要はありませんCREATE DATABASE IF NOT EXISTS db_nameし、USE db_nameステートメント。

.sqlファイルに記載されているデータベースが存在しない場合は、データベースを作成する権限を持つユーザーと接続していることを確認してください。


14

データベースをインポートする

  1. ドライブに行く:

    command: d:
  2. MySQLログイン

    command: c:\xampp\mysql\bin\mysql -u root -p
  3. pwdを要求します。入力してください:

    pwd
  4. データベースを選択

    use DbName;
  5. ファイル名を入力してください

    \.DbName.sql

11

MySQLがあるディレクトリに移動します。

 c:\mysql\bin\> mysql -u username -p password database_name <
 filename.sql

また、すべてのデータベースをダンプするには、-all-databasesオプションを使用します。データベースの名前を指定する必要はありません。

mysqldump -u username -ppassword all-databases > dump.sql

または、SQLyogなどのGUIクライアントを使用してこれを行うこともできます。


11

使用する:

mysql -u root -p password -D database_name << import.sql

詳細については、MySQLヘルプを使用してください- mysql --help

これらは私たちのコンテキストでは有用なオプションになると思います:

[~]$ mysql --help
mysql  Ver 14.14 Distrib 5.7.20, for osx10.12 (x86_64) using  EditLine wrapper
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --bind-address=name IP address to bind to.
  -D, --database=name Database to use.
  --delimiter=name    Delimiter to be used.
  --default-character-set=name Set the default character set.
  -f, --force         Continue even if we get an SQL error.
  -p, --password[=name] Password to use when connecting to server.
  -h, --host=name     Connect to host.
  -P, --port=#        Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306).
  --protocol=name     The protocol to use for connection (tcp, socket, pipe,
  -s, --silent        Be more silent. Print results with a tab as separator, each row on new line.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.

大規模なデータベースをインポートしていて、進行状況バーがない場合、何が楽しいでしょう。Pipe Viewerを使用して、パイプを介したデータ転送を確認する

Mac用、 brew install pv

Debianの/ Ubuntuのために、apt-get install pv

その他については、pv-Pipe Viewerを参照してください。

pv import.sql | mysql -u root -p password -D database_name

1.45GiB 1:50:07 [339.0KiB/s]   [=============>      ] 14% ETA 11:09:36
1.46GiB 1:50:14 [ 246KiB/s]     [=============>      ] 14% ETA 11:09:15
1.47GiB 1:53:00 [ 385KiB/s]     [=============>      ] 14% ETA 11:05:36

Centosの場合:yum install pv
Jonny


9

ここでのほとんどの答えは単純なコマンドに言及しているだけですが

mysql -u database_user -p [db_name] <database_file.sql

今日、データベースとテーブルにこのコマンドでは不十分なutf8照合があることはごく一般的です。エクスポートされたテーブルにutf8照合があると、次のコマンドを使用する必要があります。

mysql -u database_user -p --default-character-set = utf8 [db_name] <database_file.sql

Surleyこれは他の文字セットでも機能します。正しい表記法を示す方法はここにあります:

https://dev.mysql.com/doc/refman/5.7/en/show-collat​​ion.html

また、データベースが存在しない場合は、空のデータベースを最初に作成する必要があるとのコメントもありました。これは正しい場合もありますが、エクスポートファイルによって異なります。エクスポートされたファイルにデータベースを作成するコマンドがすでに含まれている場合、データベースを別の手順で作成する必要はなく、インポート時にエラーが発生する可能性さえあります。そのため、インポート時には、ファイルを調べてそこに含まれているコマンドを確認することをお勧めします。エクスポート時には、特にファイルが非常に大きく、エディターで読みにくい場合は、設定に注意することをお勧めします。

ここにリストされ、説明されているコマンドには、さらに多くのパラメーターがあります。

https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

別のデータベースバージョンを使用している場合は、対応するバージョンのマニュアルも検索することを検討してください。上記のリンクはMySQLバージョン5.7を参照しています。


9

データベースをエクスポートする場合:

mysqldump -u username -p database_name > file.sql

データベースをインポートする場合:

mysql -u username -p database_name < file.sql

8

次のコマンドは、WAMP上のWindows 7のコマンドライン(cmd)から動作します。

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql


7

Mac OS Xを使用している人に役立つと思いました。

/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql

交換するxamppmamp、または他のWebサーバー。



6

データベースにインポート:

mysql -u username -p database_name </ file path / file_name.sql

データベースからエクスポート:

mysqldump -u username -p database_name> / file path / file_name.sql

これらのコマンドの後、プロンプトがMySQLパスワードを要求します。


5

バックアップのために、BATファイルを作成し、タスクスケジューラを使用してこのBATファイルを実行します。データベースのバックアップを取ります。次の行をコピーしてメモ帳に貼り付け、.batファイルを保存して、システムで実行するだけです。

@echo off
for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i
for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i
for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i
for /f %%i in ('time /t') do set DATE_TIME=%%i
for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i

"C:\Program Files\MySQL\mysql server 5.5\bin\mysqldump" -u username -ppassword mysql>C:/%DATE_DAY%_%DATE_TIME%_database.sql

5

次の手順file.sqlは、MySQLデータベースへのアップロードに役立ちます。

ステップ1:アップロードしfile.sql.zip任意のディレクトリに解凍して、そこ
sudo apt-get install unzipsudo apt-get unzip file.sql.zip
ステップ2:そのディレクトリに今すぐ移動します。例:cd /var/www/html

ステップ3:mysql -u username -p database-name < file.sql
パスワードを入力し、アップロードが完了するまで待ちます。


5

データベースが作成されないという問題が何度も発生しました。

このように修正しました

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.