web-dev-qa-db-ja.com

複数のSQLファイルをMySQLデータベースに簡単にインポートする方法は?

複数のsqlファイルがあり、importすべてを一度にMySQLデータベースに入れたいです。

PHPMyAdminに移動してデータベースにアクセスし、importをクリックして、ファイルを選択してインポートします。ファイルが複数ある場合、時間がかかります。

複数のファイルをインポートするより良い方法があるかどうかを知りたいのですが、1つのファイルが他のファイルをインポートするなどのようなものです。

私はWAMPを使用していますが、コンピューターに追加のプログラムをインストールする必要はありませんのソリューションが欲しいです。

46
Chococroc

Windowsで、ターミナルを開き、コンテンツフォルダーに移動して書き込みます。

copy /b *.sql all_files.sql

これにより、すべてのファイルが1つに連結されるため、PhpMyAdminを使用して非常にすばやくインポートできます。

LinuxおよびmacOSでは、@ BlackCharlyが指摘したように、これはトリックを行います:

cat *.sql  > .all_files.sql

重要な注意:直接実行するとうまくいくはずですが、システムがファイルを追加するために、巨大な出力ファイルがどんどん大きくなるループに陥る可能性があります。これを回避するには、2つの解決策が考えられます。

A)安全のために結果を別のディレクトリに入れます(@moshに感謝):

mkdir concatSql
cat *.sql  > ./concatSql/all_files.sql

B)異なる拡張子を持つファイルにそれらを連結し、名前を変更します。 (@William Turrellに感謝)

cat *.sql  > all_files.sql1
mv all_files.sql1 all_files.sql
93
Chococroc

これは私が見つけた最も簡単な方法です。

Windows(powershell)の場合:

cat *.sql | C:\wamp64\bin\mysql\mysql5.7.21\bin\mysql.exe -u user -p database

上記のWAMP - MySQLへのパスを挿入する必要があります。システムパスを使用しました。

Linux(Bash)の場合:

cat *.sql | mysql -u user -p database

45
StanleyD
  1. Goto cmd

  2. コマンドプロンプトで入力C:\ users\Usersname> cd [.sql tables folder path]
    Enterキーを押します
    例:C:\ users\Usersname> cd E:\ project\database

  3. タイプコマンドプロンプト
    C:\ users\Usersname> [。sqlフォルダーのドライブ(ディレクトリ)名]
    Enterキーを押します
    例:C:\ users\Usersname> E:

  4. 単一ファイル内のすべての.sqlファイル(テーブル)をマージするためのコマンドプロンプトを入力します。
    copy/b * .sql newdatabase.sql
    Enterキーを押します
    EX:E:\ project\database> copy/b * .sql newdatabase.sql

  5. ディレクトリフォルダー内の複数の.sql(file)テーブルファイルを1つのファイルにマージすることを確認できます。
    例:E:\ project\database

11
PHP Kishan

私はそれが2年を少し過ぎていることを知っています...しかし、私はこれを行う方法を探していました、そして投稿された解決策に過度に満足していませんでした(それはうまくいきますが、インポートが起こると少し情報が欲しいです) 。すべてのSQLファイルを1つに結合する場合、進行状況の更新は行われません。

だから私は答えを探し続け、同じ答えを探している将来の人々のために見つけたものを投稿するのに良い場所かもしれないと思った。これは、フォルダーから複数のSQLファイルをインポートするWindowsのコマンドラインです。これは、mysql.exeがあるディレクトリでコマンドラインから実行します。

for /f %f in ('dir /b <dir>\<mask>') do mysql --user=<user> --password=<password> <dbname> < <dir>\%f

いくつかの想定値(例として):

for /f %f in ('dir /b c:\sqlbackup\*.sql') do mysql --user=mylogin --password=mypass mydb < c:\sqlbackup\%f

フォルダーに2セットのSQLバックアップがある場合、*。sqlをより具体的なもの(mydb _ *。sqlなど)に変更できます。

5
DragonYen

このようにmysqlシェルに入ります。

mysql --Host = localhost --user = username --password --database = db

次に、sourceコマンドとセミコロンを使用してコマンドを区切ります。

ソースfile1.sql;ソースファイル2;ソースファイル3;

4
Markus Zeller

このファイルを.batとして保存して実行し、括弧内の変数を変更します...

@echo off
title Mysql Import Script
cd (Folder Name)
 for %%a in (*) do (
     echo Importing File  : %%a 
     mysql -u(username) -p(password)  %%~na < %%a
)
pause

データベース名が1つだけのデータベース変更(%%〜na)の場合。

2
Tarek

最も簡単な解決策は、すべてのSQLファイルを1つにコピー/貼り付けすることです。

ファイルのインポートにsqlマークアップを追加することはできません(インポートされたファイルはサーバーではなくコンピューターにあり、MySQLは一部を管理していませんimport markup =外部SQLファイルの場合)。

1
BlackCharly

コマンドプロンプトで以下のコマンドを入力するだけで、すべてのSQLファイルが単一のSQLファイルにバインドされます。

c:/xampp/mysql/bin/sql/ type *.sql > OneFile.sql;
0
Ajay Singh