- - PR -
テーブルを丸ごとコピー
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-12 15:00
VB.NET2003を使用しています。
汎用DataAdapter(OleDbDataAdapter)を使い、テーブル1(4件ほど)からテーブル2(空)へ 丸ごとデータをコピーをしようとしています。 下記のようにやりましたが、エラーにもならずデータは追加されなく終わってます。 1.OleDbConnection 入力側接続 2.OleDbDataAdapter 入力側DataAdapter 3.Fill 入力側DataTable 4.OleDbConnection 出力側接続 5.OleDbDataAdapter 出力側DataAdapter 6.Fill 出力側DataTable 7.出力側DataAdapter.Update(入力側DataTable) NewRow〜Addのやり方では問題はないのですが....... Loopをさせないで1回で追加できる方法はないのでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2005-08-12 15:08
INSERT INTO コピー先テーブル SELECT * FROM 元テーブル
oracleならこれでコピーできますが | ||||||||
|
投稿日時: 2005-08-12 15:32
七味唐辛子さん、ありがとうございます。
このやり方は知ってますが使えないです。 入力と出力は別マシンとも考慮してるので..... できればDataAdapterで...... | ||||||||
|
投稿日時: 2005-08-12 15:54
別マシンでしたら、
の元テーブルを、DB link で参照するようにすれば、上手くいくと思います。 | ||||||||
|
投稿日時: 2005-08-12 16:05
YKCさん、ありがとうございます。
Insert〜Selectは、仕様により使えない事になってます。(リンクなどで同一マシン上と思わせるのもダメ) なのでSQL文は使わない方法で行なってます。(DataAdapter内では自動生成されてるとは思います) やっぱ難しいんですかね。 | ||||||||
|
投稿日時: 2005-08-12 16:41
DataSet2.Tables.Add("DataTable1")
みたいな感じでいけませんでしょうか?(未確認です) コピー元とコピー先テーブルのスキーマが違うとアウトですが。 | ||||||||
|
投稿日時: 2005-08-12 17:32
入力側 DataTable の DataRow の RowState はどうなっているでしょうか?
Update メソッドは RowState の値によって INSERT/UPDATE/DELETE を実行する/しないはずです。 あと、出力側 DataAdapter の InsertCommand 等が適切に設定されてるかどうかも気になりますが…。 |
1