社内基幹システムのDBのデータを利用したシステムをphp+MySQLで作成しています。
「データを利用」と言っても直接基幹システムのDB(Oracle)に接続しにいかず、毎晩バッチ処理で一旦いくつかのテーブルをCSV出力&インポートして使用するという感じです。
ところがあるテーブルだけレコード数が膨大で、MySQLへのCSVインポートがうまくいきません。
php.iniでアップロードできるサイズの変更など試しましたが、1回でインポートは完了しませんでした。
そこで調べたところ「BigDump」という複数回にわけてインポートが自動実行されるソフトがあることを知りました。
ところがこれは、準備した「sqlファイル」が複数回に分けて実行されるというものでした。
sqlファイルを準備したいのですが、Oracleより特定のテーブルのみをsqlファイルとして
出力する方法などありますか?また、これでsqlファイルを生成したものは直接MySQLへのインポート用に使用可能でしょうか?
また、上記以外でも何かよい方法がありましたらご教示願います。
行数が30万件ほどあるCSVから、PHP経由でMysqlにデータを投入
行数が30万件ほどあるCSVから、PHP経由でMysqlにデータを投入しようとしています。
2000件ごとにファイルを分割し、再度各ファイルを読み込みなおして、insertしようと考えました。
http://okwave.jp/qa/q5930015.html
CSVがすでにあるのでしたら10000行づつとかに切ってやればいいと思います
unix環境ならsplit、Windows環境ならsplit互換ツールか下記のようなソフトで
http://handcraft.blogsite.org/Memo/Article/Archives/258
CSVはどうやって出力しているのでしょうか。そこで分割制御できませんか?
SQLを作る場合はSQL*Plusで
SELECT 'INSERT INTO xxxx VALUES('''||COL1||''','',||COL2||''','''||・・・・
FROM xxxx WHERE ~ ORDER BY ~
の結果をSPOOLするとかで対応したりしますが・・・