76

400 MB の大きな SQL バックアップ ファイルがあります。そのファイルをWAMPimportを使用して MySQL データベースにインポートしようとしていますが、アップロード ファイルのサイズが大きすぎるなどの多くの理由でインポートに失敗しました。そこで、WAMP での PHP と MySQL の設定にいくつかの変更を加えました。行われた変更は、

Under WAMP->MySQL->my.ini

    max_allowed_packet = 800M
    read_buffer_size = 2014K

 Under WAMP->PHP->PHP.ini

    max_input_time = 20000
    memory_limit = 128M

このような大きな SQL ファイルをWAMPimportを使用してインポートするのは正しい方法ですか?

もしそうなら、構成ファイルに正しい変更を加えましたか? 上記の変数に許可される最大値はいくつですか?

4

13 に答える 13

161

このコマンド ラインの方法で大きなファイルをインポートできます。

mysql -h yourhostname -u username -p databasename < yoursqlfile.sql
于 2013-03-07T18:01:22.720 に答える
39

MySQL Workbenchを使用していると(別の人の回答への説明コメントで)述べているので、そこで「sqlスクリプト」オプションを使用してみてください。これにより、コマンドラインを使用する必要がなくなります(ただし、その馬に乗って乗ることを学ぶのは良いという他の答えには同意します)。

  1. MySQL Workbench で、[ファイル] メニューに移動し、[スクリプトを開く] を選択します。これにはおそらく長い時間がかかり、あなたが説明したほど大きなものを開くように作られていないため、アプリがクラッシュすることさえあります.

  2. より良い方法は、コマンドラインを使用することです。マシンに MySQL クライアントがインストールされていることを確認してください。これは実際の MySQL を意味します (Workbench GUI や PhpMyAdmin などではありません)。コマンドライン ツールについて説明しているリンクを次に示します。ダウンロードしてインストールしたら、マシンでターミナル ウィンドウを開きます。ファイル システム (バックアップ ファイルなど) からターゲット データベースにデータを丸呑みする方法は 2 つあります。1 つは「source」コマンドを使用する方法で、もう 1 つは < リダイレクト演算子を使用する方法です。

オプション 1: バックアップ ファイルがあるディレクトリから:

$mysql -u username -p -h hostname databasename < backupfile.sql

オプション 2: バックアップ ファイルがあるディレクトリから:

$mysql -u username -p -h hostname
[enter your password]
> use databasename;
> source backupfile.sql

明らかに、これらのオプションの両方で、SQL のバックアップ ファイルが必要です。

于 2013-03-07T18:48:25.647 に答える
38

mysql コマンド ウィンドウからこれを使用します。

mysql> use db_name;
mysql> source backup-file.sql;
于 2015-02-05T22:19:18.130 に答える
7

次のコマンドを使用して、任意のSQLクエリブラウザからインポートコマンドを作成できます。

source C:\path\to\file\dump.sql

クエリウィンドウで上記のコードを実行します...そしてしばらく待ちます:)

これは、前述のコマンドラインバージョンとほぼ同じです。主な違いは、代わりにMySQL内から実行されることです。非標準のエンコーディングを使用している場合は、エンコーディングの失敗のリスクが少ないため、コマンドラインバージョンを使用するよりも安全です。

于 2013-03-07T18:24:10.373 に答える
3

社内で SQL サーバーを移動したときに同じ問題が発生しました。

私たちが最終的に使用した良い解決策は、SQL ファイルをチャンクに分割することです。それにはいくつかの方法があります。使用する

http://www.oserov.de/bigdump/は良さそうです (ただし、使用したことはありません)

http://www.rusiczki.net/2007/01/24/sql-dump-file-splitter/はそれを使用し、混乱から構造を取得するのに非常に役立ち、そこから取得できました。

お役に立てれば :)

于 2015-03-18T22:31:32.620 に答える
2

ローカルで行う場合は、次の 3 つのことを行う必要があります。

PHPインストール内php.iniまたはphp.cfgPHP インストールの

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

または、他の値を設定します。Apache を再起動します。

または

PHPビッグ ダンプ ツールを使用します。今まで見た中で最高です。無料でオープンソースです。

于 2015-05-12T04:52:09.640 に答える
1

最も簡単な方法は、MYSQL コマンド ラインを使用してファイルをアップロードすることだと思います。

ターミナルからコマンドを使用して MySQL コマンド ラインにアクセスし、ソースを実行する

    mysql --host=hostname -uuser -ppassword
    source filename.sql 

または端末から直接

   mysql --host=hostname -uuser -ppassword < filename.sql

プロンプトで。

于 2015-03-04T12:15:06.690 に答える
1

phpMyAdmin の項目 1.16 で、次のように述べています。

1.16 大きなダンプ ファイルをアップロードできません (メモリ、HTTP、またはタイムアウトの問題)。


バージョン 2.7.0 以降、インポート エンジンが書き直され、これらの問題は発生しなくなりました。可能であれば、phpMyAdmin を最新バージョンにアップグレードして、新しいインポート機能を利用してください。

最初に確認する (またはホスト プロバイダーに確認するよう依頼する) ことは、構成ファイルupload_max_filesizememory_limitpost_max_sizeの値です。php.iniこれら 3 つの設定はすべて、PHP が送信および処理できるデータの最大サイズを制限します。1 人のユーザーも言ってpost_max_sizeおりmemory_limit、upload_max_filesize より大きくする必要があります。アップロードが大きすぎる場合、またはホスティング プロバイダーが設定を変更したくない場合は、いくつかの回避策があります。

特徴を見てください$cfg['UploadDir']。これにより、scp、ftp、またはお気に入りのファイル転送方法を介してサーバーにファイルをアップロードできます。その後、PhpMyAdmin は一時ディレクトリからファイルをインポートできます。詳細については、このドキュメントの構成を参照してください。

ユーティリティ ( BigDumpなど) を使用して、アップロード前にファイルを分割します。このアプリケーションまたはサードパーティのアプリケーションをサポートすることはできませんが、ユーザーが成功していることは認識しています。

シェル (コマンド ライン) アクセス権がある場合は、MySQL を使用してファイルを直接インポートします。これを行うには、MySQL 内から「source」コマンドを発行します。

source filename.sql;
于 2014-08-09T04:39:09.937 に答える
-3

my.ini

max_allowed_packet = 800M
read_buffer_size = 2014K

PHP.ini

max_input_time = 20000
memory_limit = 128M
post_max_size=128M
于 2014-06-04T13:37:58.847 に答える