2011-02-10 15 views
3

私はSQLサーバー2005を使用しています。テーブルの1つでは、ntext型の列 "xmldefinition"があります。今この列のデータは非常に巨大で、全体のxmlテキストを含んでいます。ntext列のSQL管理スタジオから完全なデータを取得するには?

例えば: - <root><something1>....</something1></root>

だけ手動で全体のxmlを通過する私は管理のスタジオから文字列全体を取得したいし、それがxmlファイルで外部にコピーします。しかし、私はこの列を照会し、データをコピーして別のファイルに貼り付けると、内容が途中で壊れてしまい、完全ではありません。

例えば: - <root><something1>........<somechar

私は、これは列のXMLデータからだけでいくつかの8196の文字をコピーすると確信しています。だから私の質問は、どのように私は手動でこの列の完全なデータを取得するのですか。しかし、私はその列を読むためのC#コードを書くことができますが、私は管理スタジオでこれを手動で行いたいです。何か考えてください。

+1

NTEXTは廃止されました。使用しないでください。 XMLデータがある場合は、最初に 'XML'データ型を使用してください。それはXMLのための最も最適化されたストレージだろう。もしあなたができないなら、少なくともNTEXTの代わりに 'NVARCHAR(MAX)'に切り替える......それと完全な文字列を得ることは簡単だ –

+0

@ marc_s - はい、そうです。しかし、これは何らかのレガシーシステムであり、私たちは列を今のところntextとして追加するフレームワークに取り組んでいます。このフレームワークは第三者ベンダーのものです。だから私たちは現在ntextと一緒に行く必要があります。 –

答えて

4

select文でNTextからXMLへデータを変換しないのはなぜですか?次に、SSMS内の別のウィンドウでXMLを開くことができます。

+0

絶対に動作します。ありがとう。驚いたことに、私はこのxmlデータ型を認識していませんでした。シンプルなキャストは今私のために働く...クール。 –

3

一般的にこの制限を超える唯一の方法はXMLによるものです。 LONG VARCHAR列の場合、私は通常、データがすでにXMLはそう簡単なキャストが動作するはずされ、あなたの場合にはもちろん

select object_definition(object_id('sysdatabases')) 
as [processing-instruction(x)] FOR XML PATH 

&lt;などに変更された処理命令のトリック回避<)は、次のようなものを使用します!

+0

他の情報もありがとう。はい、私にはxmlへのシンプルなキャストが今動作します。これは私にとって新しいものでした。 –

5

SQL Server truncation and 8192 limitationに示されているエクスポート方法が私に役立ちました。要約すると、

データは切り捨てられないフラットファイルにエクスポートできます。これを行うには:

  • は、右のデータベースに
  • クリックして[タスク]をクリック - > [データのエクスポート
  • は、あなたのデータソースが
  • は、宛先タイプの「フラット・ファイルの出力先」を選択します(デフォルトは問題ないはずです)を選択します。
  • 出力のファイル名を指定します。
  • 「転送するデータを指定するクエリを書く」を選択し、「テーブルのコピーまたはクエリの指定」貼り付けで
  • クエリで

残りの手順は自明でなければなりません。これにより、ファイルがテキストに出力され、お気に入りのテキストエディタで開くことができます。

関連する問題