2011-12-28 8 views
2

私は、上記の作業に使用する必要のある技術の種類にかなり圧倒されています。私はスタックのオーバーフロー株を検索しましたが、これを行うためのステップの確かなチェックリストを特定できませんでした。SQL Serverデータベースにワードドキュメントを挿入しますか?

単語の文書をデータベースに挿入する際に使用する必要がある手順/ツールの概要を知りたいと思います。

私は考えた:

  1. は、FileStreamを、ワードファイルを読み込みます。
  2. xmlオブジェクト(単語ml)に逆シリアル化します。
  3. 何とか(わからない)SQL Serverのxml列に単語mlを挿入します。

XMLSerializerオブジェクトを使用して単語mlを読み取ることは可能ですか?どのようにデータベースに挿入するのですか?

編集:私は実際にXMLとしてそれを格納するための私の必要性故に、XPathを使用してノードを見つけるような格納されたデータに対して操作を実行する必要が ...

+0

あなたは内のWord文書の実際の "グラフィック" 表現、またはテキストだけが必要ですか?あなたはあなたの目標に応じて異なる方法にアプローチすることができます。 – joshua9k

+2

データベースで検索可能にしますか?そうでない場合は、スペースを節約するために、バイナリ形式のblobとして保存してください。フルテキスト検索可能にしたい場合は、テキストとして保存する必要があります。なぜXMLをシリアル化したいのかわかりません – Andrey

+1

Word文書がXMLとして保存されている必要がありますか、それともWord 2003の.doc形式でもかまいませんか? –

答えて

2

これらの項目(カテゴリ、キーワード、作成日、所有者など)の追加の列または表の関係FileStreamまたは通常のBLOBストレージを使用する必要があります。 FileStreamには初期作業が少し必要ですが、これを使用するために既にインストールされている特定のデータベースをアップグレードする際に問題がありました。これを動作させるためにサーバーを再インストールする能力/意欲に応じて、あまりにも遠すぎる前に確かに概念実証を行うべきです。技術的には、私はBLOBを使用することで決して問題を抱えていませんでした

あなたの使用パターンに応じて、いくつかの調査が行われました。つまりファイルが平均1Mbより大きく、高速な読み取りアクセスが必要な場合は、FileStreamを使用するほうがよいでしょう。

パフォーマンスの違いはほとんどありませんでしたが、私はデザインの観点からFileStreamを選んでいます。

は見てみましょう:

http://technet.microsoft.com/en-us/library/bb933993.aspx

http://www.mssqltips.com/sqlservertip/1489/using-filestream-to-store-blobs-in-the-ntfs-file-system-in-sql-server-2008/

0

あなたにも、バイト[]ストリームを作成するまで見ることができますgoogleのルックアップとしてMicrosoft.Interopは、MDSNのオンラインでたくさんの例があります

BinaryStreaming CodeProject.comだけでなく、Stackoverflowを見てシリアル化したい場合は、過去のユーザー/質問とソリューションからサンプルのトンを提供します。

0

実際には、ワードフォーマット(2010+)はXMLの束を含んでいるジップです:)。 varbinaryまたはtextカラムを使用することをお勧めします。

0

XMLを使用してこれを行うことはできません。 Word文書にはバイナリコンテンツがあると私は信じています。私はFileStreamを試して、データベースにvarbinary(max)として保存します。これは確かにそれを処理するための最も一般的かつ柔軟な方法であり、後でその機能を拡張することを選択した場合は、他のファイルタイプに対して記述したコードを再利用することができます。

+0

2GBまでのサイズのバイナリカラムに 'varbinary(max)'を使うことをお勧めします... –

+1

良い点。私はあなたの提案ごとに私の答えを更新しました。 – Jeff

+0

Filestreamが動作するとき、私はそれとvarbinaryとの間に再利用性に関して違いはないと言います。私が間違っている? –

1

ほとんどの場合、ファイルをデータベースに「そのまま」格納すると、ファイルは「BLOB」または「Binary Large OBject」として保存されます。ここで

は、MSSQLにBLOBデータを読み書きする方法についての記事です: http://www.codecapers.com/post/manipulating-blob-data-in-mssql-with-c.aspx

ドキュメントのいくつかの部分は、データベースから検索可能にする必要がある場合は、列としてBLOBを作成して、まだ持っていることができます

+0

提供されているリンクは現在無効です。 – Paul

関連する問題