2016-09-25 6 views
0

私はSQL Server、C#などで非常に新しくなっています。でも、私は毎日勉強しています。楽しいです!T-SQLからC#へのSQLへ戻るSQL

SQL Serverの2つの異なるデータベースの2つのテーブルから情報を取得する必要があります。これを.xmlファイルに変換し、C#でバブルソートし、SQL Serverの3番目のデータベースに戻します。

テーブルをxmlファイルに変換するコードを作っていますが、ここで私はそれらを1つの.xmlファイルにすることができますか?

私が学んだコードでは、テーブルごとに1つずつ作成されるので、2つのデータベースの2つのテーブルから4つの.xmlファイルが得られます。

SELECT * 
FROM [Database1].[dbo].[Table_1] 
ORDER BY NEWID() 
FOR XML AUTO 

SELECT * 
FROM [Database1].[dbo].[Table_2] 
ORDER BY NEWID() 
FOR XML AUTO 

SELECT * 
FROM [Database2].[dbo].[Table_1] 
FOR XML AUTO 

SELECT * 
FROM [Database2].[dbo].[Table_2] 
FOR XML AUTO 

あなたが、私は、少なくとも私が欲しいデータを取ることができます見ることができるように私は、SQL Serverで3番目のデータベースにC#とバブルソートでそれをそれを入れなければなりませんxmlファイルになっていたら、それが来るときC#とバブルソートすると、私は完全に失われています。私は周りを探検したが、私は理解が難しいので、皆さんがもっと簡単な方法で試して説明できることを願っていました。ここで

+0

こんにちはマリク、ようこそ。私に1つのヒントを許してください:あなたは2つの質問をここに持っています。これにより、ユーザーは自分の質問に対する回答を簡単に見つけることができます。 – Shnugo

答えて

0

一方の部分だった:どのように

これらは、現在のDB、別のDbのに対して、2に対して2、4種類の呼び出しです:

SELECT TOP 3 * 
FROM INFORMATION_SCHEMA.TABLES 
FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('CurrentDb') 

SELECT TOP 3 * 
FROM INFORMATION_SCHEMA.COLUMNS 
FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('CurrentDb') 

SELECT TOP 3 * 
FROM OtherDb.INFORMATION_SCHEMA.TABLES 
FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('OtherDb') 

SELECT TOP 3 * 
FROM OtherDb.INFORMATION_SCHEMA.COLUMNS 
FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('OtherDb') 

が1で一緒に同じを取得するには、あなただけのラップする必要があり、私は一つに4つのXML結果を得ますかこれは外側の選択内にある。 ,TYPEにご注意ください

説明:SELECT * FROM xyz FOR XML RAWを書くと、XMLが返されます。これは完全で複雑な構造ですが、依然としてスカラー値です。

書込みSELECT (SELECT * FROM xyz FOR XML RAW) AS MyXML,'test' AS OtherColumn FROM SomeTable。 XMLを取得しますが、をエスケープするとのテキストが表示されます。 実際のXMLを返すには、,TYPEを指定する必要があります。

SELECT 
(
    SELECT TOP 3 * 
    FROM INFORMATION_SCHEMA.TABLES 
    FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('CurrentDb'),TYPE 
) 
,(
    SELECT TOP 3 * 
    FROM INFORMATION_SCHEMA.COLUMNS 
    FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('CurrentDb'),TYPE 
) 
,(
    SELECT TOP 3 * 
    FROM OtherDb.INFORMATION_SCHEMA.TABLES 
    FOR XML RAW('INFORMATION_SCHEMA.TABLES'),ROOT('OtherDb'),TYPE 
) 
,(
    SELECT TOP 3 * 
    FROM OtherDb.INFORMATION_SCHEMA.COLUMNS 
    FOR XML RAW('INFORMATION_SCHEMA.COLUMNS'),ROOT('OtherDb'),TYPE 
) 
FOR XML RAW 
+0

もっとabitについて説明できますか?私はテストし、それが私が望むことをしますが、なぜそれがまだ動作するのかを正確には理解していません。 – Marik

+0

@Marik、こんにちは、私はいくつかの説明を追加...今すぐクリア? – Shnugo

+0

はい、ありがとうございます! – Marik