複数のsql
ファイルがあり、importすべてを一度にMySQLデータベースに入れたいです。
PHPMyAdmin
に移動してデータベースにアクセスし、import
をクリックして、ファイルを選択してインポートします。ファイルが複数ある場合、時間がかかります。
複数のファイルをインポートするより良い方法があるかどうかを知りたいのですが、1つのファイルが他のファイルをインポートするなどのようなものです。
私はWAMP
を使用していますが、コンピューターに追加のプログラムをインストールする必要はありませんのソリューションが欲しいです。
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
これは私が見つけた最も簡単な方法です。
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
Goto cmd
コマンドプロンプトで入力C:\ users\Usersname> cd [.sql tables folder path]
Enterキーを押します
例:C:\ users\Usersname> cd E:\ project\database
タイプコマンドプロンプト
C:\ users\Usersname> [。sqlフォルダーのドライブ(ディレクトリ)名]
Enterキーを押します
例:C:\ users\Usersname> E:
単一ファイル内のすべての.sqlファイル(テーブル)をマージするためのコマンドプロンプトを入力します。
copy/b * .sql newdatabase.sql
Enterキーを押します
EX:E:\ project\database> copy/b * .sql newdatabase.sql
ディレクトリフォルダー内の複数の.sql(file)テーブルファイルを1つのファイルにマージすることを確認できます。
例:E:\ project\database
私はそれが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など)に変更できます。
このようにmysqlシェルに入ります。
mysql --Host = localhost --user = username --password --database = db
次に、sourceコマンドとセミコロンを使用してコマンドを区切ります。
ソースfile1.sql;ソースファイル2;ソースファイル3;
このファイルを.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)の場合。
最も簡単な解決策は、すべてのSQLファイルを1つにコピー/貼り付けすることです。
ファイルのインポートにsqlマークアップを追加することはできません(インポートされたファイルはサーバーではなくコンピューターにあり、MySQLは一部を管理していませんimport markup =外部SQLファイルの場合)。
コマンドプロンプトで以下のコマンドを入力するだけで、すべてのSQLファイルが単一のSQLファイルにバインドされます。
c:/xampp/mysql/bin/sql/ type *.sql > OneFile.sql;