2012-04-19 44 views
-1

私はSQL Serverデータベースからエクスポートしようとしているテーブルを持っています。列の1つが私に苦労しています。インポートとエクスポートウィザードはあらゆる種類のエラーを投げかけています。この列を削除すると、エクスポートは完璧に実行されます。SQL Server - 正規表現を使用してデータをエクスポートしますか?

データベースの列には、完全なHTMLドキュメントがテキストデータ型として格納されています。私はHTMLなしでDIVタグの間にこの列から各フィールドのテキストをエクスポートしたいと思います。例えば

:レコードの1つの外にコピーペーストされ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
    <STYLE type=text/css> P, UL, OL, DL, DIR, MENU, PRE { margin: 0 auto;}</STYLE> 
    <META content="MSHTML 6.00.2900.3429" name=GENERATOR> 
</HEAD> 
<BODY leftMargin=1 topMargin=1 rightMargin=1> 
    <FONT face=Tahoma size=2> 
     <DIV>[REDACTED TEXT THAT I WANT TO EXPORT]</DIV> 
    </FONT> 
</BODY> 
</HTML> 

。すべての行はレコード内の同じHTMLを持ちますが、編集したテキストをエクスポートしたいだけです。

このデータベース/アプリケーションを設計した人はバカげたことを除いて、どのようにデータを取得するのですか?私は、エクスポートウィザードを動作させることができれば、HTMLで完全なレコードを引き出すことにも同意します。

編集:ここでは、インポートとエクスポートウィザードレポートのエラーです:

動作停止...
- 初期化データフロータスク(成功)
- 接続(成功)を初期化
- SQLコマンドの設定(成功)
- ソース接続の設定(成功)
- 宛先接続の設定(成功)
- Va lidating(成功)
- 準備(成功)
を実行するための - プレ実行(成功)
- 実行(警告)
メッセージ
*警告:調製SQLタスク1:複数ステップのOLE DBの操作は、発生したエラーを。可能であれば、各OLE DBのステータス値を確認します。仕事は一切行われなかった。 (SQL Serverのインポートとエクスポートウィザード)
*警告:準備SQLタスク1:複数ステップのOLE DB操作でエラーが発生しました。可能であれば、各OLE DBのステータス値を確認します。いいえ 作業が完了しました。 (SQL Serverインポートおよびエクスポートウィザード)Query(エラー)へ

  • コピー
    メッセージ
  • エラー0xc0202009:データフロータスク1:SSISエラーコードDTS_E_OLEDBERROR。 OLE DBエラーが発生しました。エラーコード:0x00040EDA。

  • エラー0xc0209029:データフロータスク1:SSISエラーコードDTS_E_INDUCEDTRANSFORMFAILUREONERROR。エラーコード0xC020907Bが発生し、 "入力"にエラー行 が配置されたため、 "入力"宛先入力 "(45)"が失敗しました。 エラーの失敗を指定します。指定された コンポーネントの指定されたオブジェクトでエラーが発生しました。これより前にエラーメッセージが表示され、エラーに関する詳細情報が になっている可能性があります。

  • エラー0xc0047022:データフロータスク1:SSISエラーコードDTS_E_PROCESSINPUTFAILED。 "Destination - Query"(34)のProcessInputメソッドがエラーコード0xC0209029で失敗し、 が "Destination Input"(45)入力を処理していました。識別されたコンポーネント がProcessInputメソッドからエラーを返しました。エラーはコンポーネントに固有の ですが、このエラーは致命的で、データフロー タスクの実行が停止します。このエラーの詳細については、 の前にエラーメッセージが表示されることがあります。

  • エラー0xc02020c4:データフロータスク1:データフロータスクバッファに行を追加しようとしてエラーコード0xC0047020で失敗しました。

  • エラー0xc0047038:データフロータスク1:SSISエラーコードDTS_E_PRIMEOUTPUTFAILED。コンポーネント "ソース

  • クエリ"(1)のPrimeOutputメソッドがエラーコード0xC02020C4を返しました。このコンポーネントは、パイプラインエンジンがPrimeOutput()を呼び出したときにエラーコードを返しました。エラーコード がコンポーネントによって定義されていますが、エラー が致命的で、パイプラインの実行が停止しています。このエラーが発生する前にエラー メッセージが表示され、そのエラーの詳細が表示されることがあります。

  • ポスト実行(成功)
    メッセージ

  • 情報0x4004300b:データフロータスク1: "コンポーネント "先 - クエリ"(34)は、" 7465行を書きました。そのフィールドのSELECT文で
+0

それが投げている何のエラー? –

+0

@FrancisAvila OPを更新しました –

+0

エクスポートを5000行に制限しても問題ありません。私はあまりにも多くの行でいくつかのExcelの制限にぶつかっています。 –

答えて

0

、あなたが本当に唯一のフィールドごとに、このようなタグを持っていると仮定すると、タグの間の部分をカットしてSUBSTRINGとCHARINDEXを使用したい部分のみを抽出します。以下は、[HTML] VARCHARに実際にあなたのフィールドのキャストであるので、あなたが見るここで、[HTML]あなたはこれを入れます:

CAST([YourHTMLFieldName] AS VARCHAR(MAX)) 

そして、この基本的に私の間でテキストを与える」と言います

SELECT SUBSTRING([HTML], CHARINDEX('<DIV>', [HTML]), CHARINDEX([HTML], '</DIV>') - CHARINDEX([HTML], '<DIV>')) 

あなたは出力が誤っCHARINDEX( 『』)「」あなたはそれを変更することができ、タグ「+ 5」が含まれる場合のように、それを少しを再生するために、おそらく必要があります。

+0

プロジェクトが変更され、データをエクスポートする必要がなくなりました。私はあなたの答えを受け入れるだろうが、これは私がこれを行うのに必要なもののように見えるからだ。 –

関連する問題