0

約120GBのデータをMySQLデータベースにインポートするインポートスクリプトを作成しました。データはいくつかの数百のディレクトリに保存されます(すべてが分離されたデータベースです)。各ディレクトリには、テーブル構造とテーブルデータを含むファイルが含まれています。

問題は; 実際のデータのサブセットを使用してローカルマシンで動作しますが、インポートがサーバーで実行された場合(数日かかります)。すべてのテーブルが作成されるわけではありません(ローカルでテストされるテーブルも)。奇妙なことに、スクリプトをサーバーで実行すると、テーブルの作成時にエラーが表示されません。

スクリプトがどのように機能するかを大まかに示します。

  1. データベースを表すすべてのディレクトリを検索します
  2. すべてのデータベースを作成する
  3. テーブルを介したデータベースループごと:テーブルの作成、テーブルの入力

gistにコードを追加しました:https ://gist.github.com/3349872

4

2 に答える 2

0

ロギングを追加して、メモリ使用量や実行時間に問題がある可能性があるため、成功した手順を確認します。

なぜあなたは与えられたCVSファイルからSQLファイルを作成してからbashで通常のインポートをしないのですか?

mysql -u root -ppassword db_something <db_user.sql

于 2012-08-14T19:17:47.180 に答える
0

痛い、問題はコードにありました。驚くほど愚かな間違い。

すべてのファイルのサブセットでコードをテストする場合、利用可能な場合はすべてのテーブル情報とテーブルコンテンツ。テーブルカウントが作成されない場合、関数はロギングステートメントを入力してから戻ります。実際のデータでは、データと構造のないファイルがあるため、これは間違いでした。いくつかのテーブルを作成した後、特定のデータベースのテーブルの作成が失敗し、戻り、他のテーブルは作成されませんでした。

于 2012-08-21T09:32:57.227 に答える