次のスタイルでデータが配置されたファイルがあります。
1 1 0.5102 0.4898 0.0000 0.0000 0.0000
1 2 0.3114 0.6886 0.0000 0.0000 0.0000
これをMS-SQLのテーブルにロードして処理する必要があります。次の設定でBULK INSERTステートメントを使用しています
FIELDTERMINATOR = ' '
ROWTERMINATOR = '\n'
しかし、何が起こるかというと、次のような内容のテーブルができてしまいます(注:すべての列をVARCHAR
にして、データがどのようにインポートされるかを確認します)。
COL1 COL2 COL3 COL3 COL5 COL6 COL7
NULL 1 1 0.5102 0.4898 0.0000 0.0000 0.0000
NULL 1 2 0.3114 0.6886 0.0000 0.0000 0.0000
基本的に、データの最初の列の前には ''(4つのスペース)があります。ただし、BULK IMPORTは、最初の列がNULL
であると想定し、列ごとにデータをオフセットします。
さて、私の質問-この問題を未然に防ぐことは可能ですか?最初のFIELD TERMINATOR
の出現を無視するようにBULK INSERTに指示できますか?プロセスの他の部分で使用されているため、入力ファイルを変更できません。
データの量が十分に少ない場合、または操作にもう少しリソースを費やす余裕がある場合は、これを回避する方法があります。一括挿入を実行したほとんどのシナリオでは、いずれの場合も追加のデータ操作が必要であるため、通常は、特別に作成された一括挿入テーブルに一括データを挿入し、そこから実際のテーブルにデータを操作して転送します。このようなタスクをはるかに簡単にします。ただし、当然、同じデータを2回処理することによるオーバーヘッドは増加します。