1

XML 形式のデータを要求する顧客がいます。通常は、Access データベースまたは CSV ファイルを渡すだけで十分なので、これは必要ありません。ただし、この場合、多数のテーブルからの適切な XML のエクスポートを自動化する必要があります。

SQL Server 2005 から実行できるのであれば、それが望ましいでしょう。しかし、私は一生これを行う方法を見つけることができません。生の xml データをダンプできますが、これは属性値を持つ行ごとのタグにすぎません。テーブルの構造を表すものが必要です。Access には、ニーズを満たす xml 形式のエクスポートがあります。ただし、これをどのように自動化できるかはわかりません。SQL を介して利用できるようには見えないため、マクロまたは vbscript を使用して XML をエクスポートするために必要なコードを追跡しようとしています。

助言がありますか?

4

4 に答える 4

1

フラグメントの代わりにドキュメントが必要な場合は、おそらく2つの部分からなるソリューションが必要になります。ただし、両方の部分をSQLServerで実行できます。

トムのエントリのコメントから、ELEMENTS引数を見つけたように見えるので、フィールドを属性ではなく子要素として取得しています。ただし、ルートノードを取得できないため、フラグメントが発生することになります。

これを処理する方法はいくつかあります。SQL Serverは、XSLTを使用してXMLドキュメントを変換するためのメソッドを提供するため、クエリの結果をルート要素でラップするXSLスタイルシートを作成できます。また、顧客のスキーマに必要なものを追加することもできます(顧客がスキーマを持っていると仮定します)。

一部のフィールドを属性として残し、他のフィールドを要素にしたい場合は、XSLTを使用してそれらのフィールドを移動することもできるため、次のようになります。

<customer id="204">
    <firstname>John</firstname>
    <lastname>Public</lastname>
</customer>
于 2008-09-24T17:42:53.883 に答える
1

FOR XML AUTO の使用を検討してください。要件によっては、EXPLICIT を使用する必要がある場合があります。

簡単な例として:

SELECT
    *
FROM
    Customers
INNER JOIN Orders ON Orders.CustID = Customers.CustID
FOR XML AUTO

これにより、customers 内の注文を含む入れ子になった XML ドキュメントが生成されます。その後、SSIS を使用して、それをファイルに簡単にエクスポートできます。私自身は試していませんが。

于 2008-09-23T19:41:13.047 に答える
0

アクセスデータベースからxmlファイルにデータをエクスポートするために使用されるマクロの概要がここにあります。これはあなたに役立つかもしれません。

Const acExportTable = 0

Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase "C:\Scripts\Test.mdb"

'Export the table "Inventory" to test.xml
objAccess.ExportXML acExportTable,"Inventory","c:\scripts\test.xml"
于 2008-09-23T19:39:25.127 に答える
0

これを行う最も簡単な方法は、それを行うための小さなアプリを作成することです。基本的な WinForm として実行し、LinqToSql dbml クラスを使用してデータベースを表すことができます。ほとんどの場合、XmlSerializer 名前空間を使用してこれらのオブジェクトをシリアル化できます。データベースの複雑さによっては、それよりも難しい場合があります。LinqToSql と Xml シリアル化の詳細については、次の投稿をご覧ください: http://www.west-wind.com/Weblog/posts/147218.aspx

それが役立つことを願っています。

于 2008-09-23T19:39:49.447 に答える