4

SSIS 経由で SQL Server に可変レコード長テキスト ファイル (CSV) を取得できた人はいますか?

入力ファイルのレコード長がさまざまな SSIS を使用して、SQL Server テーブルに CSV ファイルを取得しようと何度も試みました。この質問では、2 つの異なるレコード長は 63 バイトと 326 バイトです。すべてのレコード長は、同じ 326 バイト幅のテーブルにインポートされます。

インポートするレコードは 100 万件以上あります。
インポート ファイルの作成を制御できません。
SSIS を使用する必要があります。
これはバグとして報告されていることを MS に確認しました。いくつかの回避策を試しました。ほとんどの場合、カスタム コードを記述してレコードをインターセプトしようとしましたが、それが思い通りに機能しないようです。

4

5 に答える 5

4

同様の問題が発生し、カスタムコード(スクリプトタスク)と[データフロー]タブのスクリプトコンポーネントを使用しました。

スクリプトコンポーネントにフィードするフラットファイルソースがあります。そこでは、コードを使用して受信データを操作し、宛先に合わせて修正します。

私の問題は、プロバイダーが利用可能な日付がないために「000000」を使用していたことであり、別の列にパディング/トリムの問題がありました。

于 2008-09-24T14:47:51.213 に答える
1

このファイルを問題なくインポートできます。フラット ファイル接続マネージャーを作成するときは、[区切り形式] を選択し、SSIS 列の長さを最大ファイル列長に設定して、すべてのデータに対応できるようにしてください。

固定幅形式を使用しているように見えますが、これは CSV ファイルには正しくありません (可変長の列があるため)、または列区切り文字を正しく設定していない可能性があります。

于 2008-09-21T08:57:58.273 に答える
1

C# を使用してスクリプト タスクを記述し、各行を繰り返し処理し、適切な量のコンマを埋め込んでデータを埋め込むことができます。もちろん、これはすべてのデータが適切な列と一致していることを前提としています。

つまり、各レコードを読み取るときに、コンマの数を「数え」ることができます。次に、正しい数のコンマになるまで、レコードの末尾に X 個のコンマを追加します。

Excel には、CSV に変換するときにこの種のファイルが作成されるという問題があります。

1これを「手動で」実行できる場合、これを解決する最善の方法は、Excel でファイルを開き、レコードの「最後」に列を作成し、 s またはその他の文字でいっぱいにすることです。

厄介ですが、迅速な解決策になる可能性があります。

これを行う能力がない場合は、上記と同じことをプログラムで行うことができます。

于 2012-03-15T13:48:19.880 に答える
1

同じ問題。私の場合、ターゲット CSV ファイルには、ファイルの本文とは完全に異なる形式のヘッダーとフッターのレコードがあります。ヘッダー/フッターは、ファイル処理の完全性を検証するために使用されます (日付/時刻、レコード数、合計金額 - 他の名前の「チェックサム」...)。これは「メインフレーム」環境のファイルの一般的な形式であり、まだ開始していませんが、スクリプトを使用してヘッダー/フッターを取り除き、残りを新しいファイルとして保存し、新しいファイルを処理する必要があると予想していますファイルを作成し、検証を行います。MSがすぐに使えるとは期待できません(しかし、それは確かに素晴らしいことですよね?)。

于 2009-05-21T17:56:53.273 に答える
0

テストファイルとしてインポートして、列区切りを「、」に、行区切りをCRLFに設定できないのはなぜですか?

于 2008-09-18T03:46:43.657 に答える