現在、SQLCMDユーティリティを使用してCSVデータをSQL Serverにロードしています。SQLCMDユーティリティが拒否された行をフラットファイルに生成する
sqlcmd -Usa -Pxxx -S192.168.1.223,49546 -dlocal -i"/test.sql" -o"/test.log"
私はまた、あなたの参照のための私のtest.sql
ファイルの内容をコピーした:
SET NOCOUNT ON
BULK INSERT test FROM
"\\192.168.1.223\test.csv"
WITH
(
MAXERRORS = 1000000,
CODEPAGE = 1251,
FIELDTERMINATOR = '~%',
ROWTERMINATOR = '0x0a'
)
GO
SELECT CONVERT(varchar,@@ROWCOUNT) + ' rows affected'
GO
挿入操作は、上記で正常に動作して、以下のデータをロードするには、コマンドプロンプトで実行された私のコマンドがありますプロセス。しかし、私の懸念は、データ型やデータ長によるエラーが発生した場合、行が拒否され、特定の行をトレースすることができないということです。
拒否された行番号のログファイルと、対応する行をチェックするデータファイルを調べるたびに、 悪いファイルを生成するために、SQLPLUSユーティリティ - 私たちはORACLEで持っているなどの
は別のファイルにエラー/拒否された行を生成するための任意のオプションが、ありますか?
ありがとうございましたetsa、「ERRORFILE」構文を一括挿入に追加する方法を教えてください。上記のSQLスクリプトで説明してください。ありがとう –
いくつかのMSのドキュメントを使用して試して、何か問題がある場合は、あなたの質問に新しいスクリプトを投稿してください。 – etsa
SQLスクリプトファイルにERRORFILE = 'file_name'を追加すると、エラーレコードが別のフラットファイルに作成されます。それは今解決した! –