質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

Q&A

2回答

3394閲覧

Sql Azure の複数の関連テーブルへの同時インサート方法

KawaguchiShin

総合スコア11

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Azure

Azureは、マイクロソフトのクラウド プラットフォームで、旧称は Windows Azureです。PaaSとIaaSを組み合わせることで、 コンピューティング・ストレージ・データ・ネットワーキング・アプリケーションなど多くの機能を持ちます。

0グッド

1クリップ

投稿2015/06/23 13:49

編集2015/06/23 13:51

SQL server への複数のリレーショナルテーブルへのインサートを簡単実現したく質問しています。

例えば、下記2つのtest1,test2テーブルがあった時に、

CREATE TABLE test1 (
id int identity(1,1)
,value varchar(20)
,CONSTRAINT test1_id_pk PRIMARY KEY (id)
);
CREATE TABLE test2 (
id int
,test1_id int
,value varchar(20)
,CONSTRAINT test2_id_pk PRIMARY KEY (id)
,CONSTRAINT test1_id_fk FOREIGN KEY (test1_id) REFERENCES test1 (id)
)

やりたいのは、test1,test2へ同時にデータを挿入することです。

もちろん、この例では構造が簡単なので、

insert into test1 set (value) values ('test1_data')
insert into test2 set(test1_id,value) values (@@IDENTITY,'test2_data')

のように、last inserted IDを利用することにより、実現できることは知っています。

しかし、テーブル数が多くなってくると、このような書き方では、queryが複雑になり、
insert文のチェックも難しくなります。

イメージでは、xmlやjsonデータを流し込む形で、insert したく思っています。
下記のようなxmlの、感じです。

<test1 value="test1_data1"> <test2 value="test2_data1"> <test2 value="test2_data2"> <test2 value="test2_data3"> <test2 value="test2_data4"> <test2 value="test2_data5"> </test1> <test1 value="test1_data2"> <test2 value="test2_data1"> <test2 value="test2_data2"> <test2 value="test2_data3"> <test2 value="test2_data4"> <test2 value="test2_data5"> </test1> --------------------------

対象のRDBMSは SQL Azure,SQL Server 2012以上です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

当時は1から実装しました。お役に立てませんが、簡単なツールは知らないです。

投稿2015/06/24 03:10

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KawaguchiShin

2015/06/24 05:37

ありがとうございます。 もうちょっと探してみます。
guest

0

昔、ローカルDBから生成したxmlファイルでSQL Azureと同期を取る処理を実装した事があります。
その時はxmlをsql文に変更する汎用的なジェネレーターメソッドを作って実装しました。
GetSchemaTableなどでテーブルのスキーマ情報を取得できると思いますので、スキーマ情報とxmlから取得した値からinsert文を自動生成するような処理はいかがでしょうか?

投稿2015/06/24 00:28

chiku_

総合スコア1464

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KawaguchiShin

2015/06/24 03:01

回答ありがとうございます。 その、汎用的なジェネレーターメソッドを探しているのですが、こちらは 1から実装しなければならないでしょうか? 既存のテーブルデータから、XML形式に出力するのは、「FOR XML AUTO」で簡単にできるので、あとは、そのXMLをインサートする部分です。便利なツールなどご存知ではないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問