0

プロバイダーからの製品画像を含む 100,000 行を超える CSV ファイルが残っています。問題の詳細は次のとおりです。これを解決するためのヒントをいただければ幸いです。ありがとう。

ファイルには、製品ごとに 1 行と次の 4 つの列があります。ID,URL,HEIGHT,WIDTH 例: 1,http://i.img.com,100,200

製品に複数の画像がある場合に問題が発生します。画像ごとに 1 行ではなく、ファイルの同じ行により多くの列があります。
例: 1,http://i.img.com,100,200,//i.img.com,20,100,//i.img.com,30,50

最初の画像だけに「http://」が付いていることに注意してください。残りの画像は「//」で始まります

製品ごとの画像数がわからないため、行ごとの合計列数または最大列数を知る方法はありません。

SSIS または SQL インポート ウィザードを使用してこれをインポートするにはどうすればよいですか。

また、定期的にこれを行う必要があります。

ご協力ありがとうございました。

4

1 に答える 1

1

標準の SSIS タスクやウィザードを使用してこれを行うことはできないと思います。各行を解析するカスタム コードを作成する必要があります。VB コードを使用して SSIS でこれを行うか、各行を保持して SQL で解析を行う単一の列であるステージング テーブルにファイルをインポートすることができます。この種の操作では、SSIS の方がおそらく高速です。

別の可能性は、正規表現または検索と置換コマンドを使用してファイルを前処理することです。画像リストを二重引用符で囲んでみてください。そうすれば、引用された部分が単一の列に入って、ファイル全体を正常にインポートできるはずです。検索できる「http:\」を考えると、文字列の先頭をキャッチするのは簡単です。最後の引用符がどこにあるのかを判断することは、より問題になる可能性があります。

3 つ目の考えられる解決策は、ソースにデータを修正してもらうことです。画像を別々の行 (または理想的な別々の行を持つ別のファイル) で取得できない場合でも、エクスポートの一部としてソースから追​​加された二重引用符を取得できる可能性があります。これは、検索と置換の方法を使用するよりもエラーが発生しにくい可能性があります。

幸運を!

于 2011-09-21T15:05:49.280 に答える