sql >> データベース >  >> RDS >> Mysql

100000を超えるレコードをmysqlデータベースにインポートするにはどうすればよいですか?

    エラーメッセージは非常に明確で、問題が何であるかを示しています。php環境での実行時間の制限です。したがって、これを解決するためのいくつかのアプローチは明らかです。

    1. 環境の制限時間を延長する

    これを行うには、php構成の制限を上げるか、許可されている場合は、インポートスクリプト内で制限を動的に増やします。つまり、ini_set('max_execution_time', 3000)のようなものです。 。両方のオプションが文書化されています。 PHPのドキュメントは常に あなたがそのような質問への答えを探し始めるべき最初の場所になりなさい。

    1. 別のphp環境を使用する

    通常、このような制限は、Web環境に対して選択され、そこにいる人からの要求を処理するリスクを軽減します。ただし、別の環境に別の構成を使用することに反対するものはありません。インポートジョブは通常ではありません Webリクエストを使用して処理されますが、コマンドライン(CLI)でphpを使用して処理されます。このような通常、別の構成が使用されます。繰り返しますが、これは文書化されています。これは、必要に応じて互いに異なる両方の環境を構成するためにここで使用できるものです。ただし、このためには、CLIでphpにアクセスする必要があります。それはあなた自身のシステムでは問題ではありませんが、通常、安価なウェブホスティングサービスでは利用できません。

    1. インポートを小さなチャンクに分割します

    インポートするデータはSQLファイル、つまり単純なテキストファイルに保存されるため、通常のテキストエディタを使用してそのファイルを変更できます。注:テキストエディタ、ではありません ワードプロセッサ。大きなINSERTを分割できます そこに含まれるステートメントはいくつかのチャンクになります。構文は非常に明白です。

    1. 1つの大きなステートメントではなく、多くの個別の挿入ステートメントを使用する

    インポートしようとしているダンプファイルの作成に使用するツールに応じて、多くの個別のINSERTを使用するようにダンプを作成するオプションがあります。 1つの大きな結合されたステートメントの代わりにステートメント(各行に1つ)。 mysqldump たとえば、--skip-extended-insertを提供します このためのフラグ。このようなダンプファイルでは、ファイルを分割するだけで、インポートをいくつかの小さなチャンクに分割するのは簡単です。

    1. インポートのためにphpを完全にバイパスする

    データベースサーバー(この場合はMySQL)に直接アクセスできる場合は、phpMyAdminを使用する代わりに、データベースサーバーと直接対話することができます。 間のツール。 MySQLのsourceを使用して、ダンプファイルを直接ロードするだけです。 指図。そうすれば、PHPの制限から完全に独立しています。



    1. AndroidでSQLiteデータベースを処理するメソッドをテストする方法は?

    2. PostgreSQLラウンド(v数値、s int)

    3. 12.2 RAC/GIの新機能

    4. phpを介してmysqlに大きなテキストを保存できません