web-dev-qa-db-ja.com

260GBのcsvファイルをMySQLにインポートします

260GBまでの非常に大きなcsvがあり、MySQLにインポートしたいと思います。 MacOSで次のmysqlスクリプトを使用します

DROP TABLE IF EXISTS tmp_catpath_5;

テーブルの作成tmp_catpath_5(a1 BIGINT(20)、a2 BIGINT(20)、a3 BIGINT(20)、a4 BIGINT(20)、a5 BIGINT(20)、c1 BIGINT(20)、c2 BIGINT(20)、c3 BIGINT(20 )、c4 BIGINT(20)、c5 BIGINT(20)、INDEX(a5));

データローカル入力ファイル '/ Volumes/Time Machine Backups 1 /tmp_catpath_5.csv'をテーブルtmp_catpath_5にロードします。FIELDSTERMINATEDBY '、' ENCLOSED BY '"' LINES TERMINATED BY '\ n';

小さいファイルで機能します。 150GBですが、このサイズの場合、データベースはloadコマンドの直後に消えます

エラー1049(42000):不明なデータベース

MySQLのサイズ制限はありますか?それは何か他のものですか? MAMPアプリケーション(LAMP for MacOS)のMySQLを使用していますが、公式のMySQLアプリケーションとは異なる可能性がありますか?

7
jimkont

特定のDBエンジンに制限があるかどうかはわかりませんが、毎日10TBをインポートするMySQLシステムを管理している国防総省の管理者に会いました。彼らはこの種の問題を経験していません。

マクロを使用するのではなく、入力ファイルを解析してそこから挿入ステートメントを作成するスクリプトを作成することをお勧めします。これは、MySQLに直接フィードできます。そうすれば、ファイル全体を1回のヒットで処理するのではなく、一度に1行だけ処理できます。私はそのようなことにPerlを使うのが好きです。

また、テーブルを削除して毎回再作成するのではなく、切り捨てを使用することを検討することもできます。

5
John Gardeniers

これは実際にはあなたの質問に答えませんが、ファイルをより小さなチャンクに分割する可能性はあなたが考えたものですか? UNIXユーティリティ「split」はこれを簡単に処理できます。

「クラッシュ」とは、MySQLクライアントまたはサーバーを意味しますか?エラーが表示されていますか?

1
David