人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile


社内基幹システムのDBのデータを利用したシステムをphp+MySQLで作成しています。
「データを利用」と言っても直接基幹システムのDB(Oracle)に接続しにいかず、毎晩バッチ処理で一旦いくつかのテーブルをCSV出力&インポートして使用するという感じです。

ところがあるテーブルだけレコード数が膨大で、MySQLへのCSVインポートがうまくいきません。
php.iniでアップロードできるサイズの変更など試しましたが、1回でインポートは完了しませんでした。

そこで調べたところ「BigDump」という複数回にわけてインポートが自動実行されるソフトがあることを知りました。
ところがこれは、準備した「sqlファイル」が複数回に分けて実行されるというものでした。

sqlファイルを準備したいのですが、Oracleより特定のテーブルのみをsqlファイルとして
出力する方法などありますか?また、これでsqlファイルを生成したものは直接MySQLへのインポート用に使用可能でしょうか?

また、上記以外でも何かよい方法がありましたらご教示願います。

●質問者: kon39392
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● degucho
●50ポイント

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するとかで対応したりしますが・・・


2 ● taroe
●50ポイント ベストアンサー

行数が30万件ほどあるCSVから、PHP経由でMysqlにデータを投入

行数が30万件ほどあるCSVから、PHP経由でMysqlにデータを投入しようとしています。
2000件ごとにファイルを分割し、再度各ファイルを読み込みなおして、insertしようと考えました。
http://okwave.jp/qa/q5930015.html

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ