C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Oracleからのデータインポート


(過去ログ 49 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■26692 / inTopicNo.1)  Oracleからのデータインポート
  
□投稿者/ 超初心者 (13回)-(2008/10/17(Fri) 14:48:54)

分類:[VB.NET/VB2005 以降] 

開発環境:VB.NET2008 SQLServer2008 Express

Oracle10g(別PC)にある特定のテーブルからSQLServerのテーブルへ全データ(10万件ぐらい)取り込むプログラムを
作成しているのですが、現状は1件のデータをOracleから読んだ後に毎回INSERT文を発行して書き込んでいるので
処理時間が非常にかかっています。

※ Oracle、SQLServer共に同じテーブル構成(テーブル名、項目名も全て同じ)になっています。
  処理の対象は、1テーブルのみです。
 
  
VBを始めてまだ期間が浅く、自分で調べたかぎりでは分からなかったので
何か他に効率の良い方法があれば、ご教授下さい。

  
引用返信 編集キー/
■26694 / inTopicNo.2)  Re[1]: Oracleからのデータインポート
□投稿者/ カドルドエグ (44回)-(2008/10/17(Fri) 15:17:22)
No26692 (超初心者 さん) に返信
>1件のデータをOracleから読んだ後に毎回INSERT文を発行して書き込んでいる
別DBでのやりとりを経験したことがないので想像の域を出ませんが…。
ダンプはDBが何であれ関係ないので、一度Oracleでダンプを出力し、それをSQL Serverに流し込んでみては…?
引用返信 編集キー/
■26696 / inTopicNo.3)  Re[2]: Oracleからのデータインポート
□投稿者/ 超初心者 (14回)-(2008/10/17(Fri) 16:07:05)
カドルドエグさん
早速のご回答ありがとうございます。

> ダンプはDBが何であれ関係ないので、一度Oracleでダンプを出力し、それをSQL Serverに流し込んでみては…?
ユーティリティ等を使用して対応するということでしょうか?

VBで作成したプログラムで対応することを前提として、何か良い方法があればいいのですが・・・。

現状は、ODP.NET(OracleDataAdapter)を使用してOracleに接続し、全データをDataTableに格納後、1件ずつ読み出して
SQLServerに書き込むという作業をデータ件数分だけ繰り返しています。

1回のINSERT文で一括で書き込めるとか、DataTableを使用してもっと早く書き込む方法など何か別の方法がないのでしょうか?


何分まだ経験が浅いため、的を外れた質問かもしませんが、よろしくお願いします。
引用返信 編集キー/
■26699 / inTopicNo.4)  Re[3]: Oracleからのデータインポート
□投稿者/ いしだ (170回)-(2008/10/17(Fri) 16:53:49)
複数件づつまとめてinsertしていってはどうでしょう?
複数件づつ単位でcommitする感じで。

sql = "insert into TBL1 values (1, 'aaa1');"
+ "insert into TBL1 values (2, 'aaa2');"
........
+ "insert into TBL1 values (100, 'aaa100');";

など。
引用返信 編集キー/
■26700 / inTopicNo.5)  Re[1]: Oracleからのデータインポート
□投稿者/ はつね (862回)-(2008/10/17(Fri) 17:02:51)
はつね さんの Web サイト
No26692 (超初心者 さん) に返信
> 開発環境:VB.NET2008 SQLServer2008 Express
>
> Oracle10g(別PC)にある特定のテーブルからSQLServerのテーブルへ全データ(10万件ぐらい)取り込むプログラムを
> 作成しているのですが、現状は1件のデータをOracleから読んだ後に毎回INSERT文を発行して書き込んでいるので
> 処理時間が非常にかかっています。

それは1度やったら終わり(つまりデータ移行)なのですか?
それとも時々やるものなのですか(つまりデータ連携)?

OracleからSQL Serverへのデータ移行ならばSSMAを使うのがいいとおもいます。
http://www.microsoft.com/japan/sql/solutions/ssm/ssmav2.mspx


OracleからとってきたデータをSQL Serverに随時格納という場合も、まずはSSMAでやってしまって、
あとはデータ更新のタイミングで、いまつくっているプログラムを動かしてもいいかもです。
# 10万件はSSMAで、それからあとは更新分をプログラムでという感じ。

引用返信 編集キー/
■26709 / inTopicNo.6)  Re[2]: Oracleからのデータインポート
□投稿者/ 超初心者 (15回)-(2008/10/18(Sat) 09:43:06)
いしだ さん
はつね さん
ご回答ありがとうございます。

教えて頂いたことを早速試してみたいと思います。
ありがとうございました。
解決済み
引用返信 編集キー/
■26710 / inTopicNo.7)  Re[3]: Oracleからのデータインポート
□投稿者/ やじゅ (710回)-(2008/10/18(Sat) 09:47:44)
やじゅ さんの Web サイト
はつねさんのSSMAがよさげですね。

一応、それ以外の方法を提示しときます。
・Enterprise Managerのインポート機能
・ACCESSがあれば、それを経由する
・バルクインサートを使う

SQL Server との格闘
http://blog.goo.ne.jp/smiu2/e/f1685d3dcd7e575a7df6d24119d8f0c2

SQL-Server2000 BULK INSERTでCSVファイルをインポート
http://tukaenai-pg.cocolog-nifty.com/blog/2006/03/sqlserver2000bu_fff6.html
SQL Server でのバルク コピー操作 (ADO.NET)
http://msdn.microsoft.com/ja-jp/library/7ek5da1a.aspx
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -