2

これはよくある問題だと思いますが、探しているヘルプが正確に見つからないようです。申し訳ありません!

CSV ファイルから一括挿入を実行しようとしています。データを挿入する必要があるテーブルには、null にできないフィールドがnewid()いくつかあります。たとえば、通常は で生成される行の一意の識別子フィールドや、変更を行うユーザーのID番号など...

オンラインで調べてみると、CSV ファイルにテーブルと同じ数のフィールドが含まれている場合、または不足しているフィールドを null またはデフォルトのままにしても問題ない場合、基本的な一括インポートの方法を理解していると思いますが、見つけることができませんでした。 CSVファイルからいくつかの値を割り当てる方法と、他の必要なテーブル値を事前定義する方法を教えてくれる場所。ストアド プロシージャ内の変数から不足しているフィールドを割り当てることができる CSV からインポートする方法を誰かが教えてくれれば、非常に役に立ちます。

任意のヒント?これを実現するために使用しようとしているコードは次のとおりです。

BULK
INSERT tbl1_
FROM '\\...\importtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM tbl1_
GO
--Drop the table to clean up database.
SELECT *
FROM tbl1_
GO
4

1 に答える 1

2

bcpとBULKINSERTに適用される「バルクインポート中にNullを保持するかデフォルト値を使用する」を見たことがありますか?私はしばらくこれをしていません(単純なステージングテーブルをロードし、後で別のフラッシュステップで強化します)が、使用するとデフォルトを維持できるようです:

INSERT ... SELECT * FROM OPENROWSET(BULK...)

欠落している列については、フォーマットファイルを使用する必要があります。

2つのアイデアは少し異なります。個人的には、ステージングテーブルを読み込み、そこからコピーして、CSV列とステージングテーブルの列が一致するようにします。次に、「実際の」テーブルをロードする2番目のステップがあります。これにより、最初にデータを検証したり、bcp後の処理を実行したりできます。

于 2011-05-09T18:01:20.163 に答える