- PR -

DataReaderの値をテーブルにinsert

1
投稿者投稿内容
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-09-14 15:25
いつもお世話になっています。
VB2003、ADO.NETで開発を行っています。

DBからselect文で抽出したデータをDataReaderに格納し、
DataReaderから、テーブルへinsertしています。

コード:
While DataReader.Read

strSQL = "Insert into テーブル名 " & _
         " (列名) values ('" & DataReader!列名 & "')"

インスタンスしてSQLを実行。

End While




上記のようにループさせていますが、
パフォーマンスが悪いので、
insert into テーブル名 select * from DataReader
のように、ループさせないでinsertしたいのですが、
ご存知の方、ご教授お願いします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-09-14 15:28
DataReaderに格納しなければいいだろ。
何のために格納するんだろ?
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-09-14 15:38
上に同じく、不思議です。
データリーダーに吐き出すための SQL と insert 文をまとめちゃえば良いのでは?
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-09-14 16:49
ぶさいくろうさん、R・田中一郎さん

いつもありがとうございます。

質問の仕方が悪く、申し訳ございません。

DataReaderに一度格納するのは、
selectで抽出するDBがOracleで、
insertするDBがaccessだからです。

異なるDBだとinsertができなかったので、
DataReaderに格納後insert処理を行っております。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-09-14 17:06
取得元と行き先が違うんだったら結局1件1件やらなきゃダメでしょう。

Oracle用の参照DataAdapterを使ってDataSetにでもロードしておいて
行のRowStateをAddedに変更してから、Access用の更新DataAdapterで
そのデータをinsertしてやるとか。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-14 22:45
Oracle から Access って、データベースリンクを張れないんだっけ?
張れるみたいね。
同一マシン上にてOracleからAccessへDBリンクの張り方 link to oracle.co.jp
検索キーワード:「oracle データベースリンク access」

INSERT INTO "ACCESSのテーブル名"@dblink.name ("カラム1", ...)
(SELECT "カラム名A", ... FROM "ORACLEのテーブル名")


 文字列連結で SQL 文を作成すると、インスタンス化をしたり、データベースの側でも SQL 文の解析などで時間がかかります。パラメータを使い、準備済み SQL 文を使うことで、かなりの性能改善が見込めます。また、セキュリティ上も、安全性が高くなります。
モンジ
ベテラン
会議室デビュー日: 2005/09/06
投稿数: 85
投稿日時: 2006-09-18 18:08
Jittaさん、こんにちは。
一応、AccessからOracleのリンクテーブルを作成すると、
Accessのテーブルとして使用できるようになりました。

ただ、今後のためにVBでリンクテーブルを使用したいのですが、
Webで調べてもよく分かりません。

コード:
create database link test 
connect to test identified by test using 'TSN Name' ;

select * from test1@test ;



create文を、VBのボタンクリックイベントで記述できないので、
参照設定が足りないか、そもそもVB.NETで使用できないかだと思います。

そのあたり、ご存知でしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-18 23:45
引用:

モンジさんの書き込み (2006-09-18 18:08) より:

ただ、今後のためにVBでリンクテーブルを使用したいのですが、
Webで調べてもよく分かりません。

コード:
create database link test 
connect to test identified by test using 'TSN Name' ;

select * from test1@test ;



create文を、VBのボタンクリックイベントで記述できないので、
参照設定が足りないか、そもそもVB.NETで使用できないかだと思います。

そのあたり、ご存知でしょうか?


???
OracleClientCommand かな?の、Text プロパティに、"CREATE DATABASE LINK ..." を設定して、ExecuteNoQuery だっけ?で実行すればいいのでは?

「記述できない」って、どういう意味???
1

スキルアップ/キャリアアップ(JOB@IT)