sql >> データベース >  >> RDS >> Sqlserver

データを CSV フラット ファイルにエクスポートする際に、埋め込まれたテキスト修飾子の問題を修正するにはどうすればよいですか?

    あなたがそれを文書化するために一生懸命働き、1か月後に回答なしで支持された場合を除いて、私はこの回答を提供しません.それで、ここに行きます。あなたの唯一の選択肢は、データを変更するか、ツールを変更することのようです。

    ツールが壊れていて、ベンダーが気にしない場合、試し続けるのは間違いです。切り替える時が来ました。どのように壊れているのかを正確に調査し、RFC だけでなくツール自体の以前のバージョンにも違反していることを示すことに多大な労力を費やしました。あとどれくらいの証拠が必要ですか?

    CSVもボートアンカーです。オプションがある場合は、通常の区切りファイル形式を使用することをお勧めします。多くのアプリケーションでは、タブ区切りが適しています。 IMO の最適な区切り文字は '\' です。この文字は英語のテキストには存在しないからです。 (一方、Windows パス名を含むデータでは機能しません。)

    CSV は、交換フォーマットとして 2 つの問題があります。まず、すべてが標準というわけではありません。 RFC が何を言おうと、異なるアプリケーションは異なるバージョンを認識します。 2 つ目 (および関連) は、正規言語 を構成しないことです。 CS 用語では、正規表現として解析できないのはそのためです。 ^([^\t]*\t)*[\t]*$ と比較してください タブ区切り行の場合。 CSV の定義の複雑さの実際的な意味は、(上記を参照) それらを処理するためのツールが相対的に不足していることと、特に未明の時間帯に互換性がなくなる傾向があることです。

    CSV と DTS を起動する場合、適切なオプションがあります。その 1 つが bcp.exe です。 . Microsoft は何年も更新を試みていないため、非常に高速で安全です。 DTS についてはよくわかりませんが、自動化のために使用する必要がある場合に備えて、IIRC には外部ユーティリティを呼び出す方法があります。ただし、その bcp.exe に注意してください シェルに確実にエラーステータスを返しません。

    DTS を使用し、CSV に固執することに決めた場合、実際に残された最善の選択肢は、データを適切に準備するビューを作成することです。そのコーナーに戻ったら、たとえば「DTS2012CSV」というスキーマを作成して、select * from DTS2012CSV.tablename を記述できるようにします。 、気になる人にそれを理解するための戦いの機会を与えます (ビューテキストのコメントでそれを文書化するからですよね?)。必要に応じて、他の壊れた抽出物にその手法をコピーすることができます。

    HTH。



    1. MySQL:ランダムエントリを選択しますが、特定のエントリに重みを付けます

    2. MySQLの別のテーブルに行を作成してテーブルの列を選択する方法

    3. SQL Server のテーブルからデータを選択する際のエラー

    4. SQL ServerでのSIGN()の例