ベースのSQLServerCSVインポート
1)CSVファイルデータには
,
が含まれる場合があります (カンマ)(例:説明)の間にあるので、これらのデータをインポート処理するにはどうすればよいですか?
解決策
,
を使用している場合 (コンマ)区切り文字として使用する場合、フィールドターミネーターとしてのコンマとデータ内のコンマを区別する方法はありません。別のFIELDTERMINATOR
を使用します ||
のように 。コードは次のようになり、これはコンマとシングルスラッシュを完全に処理します。
2)クライアントがExcelからcsvを作成する場合、コンマを含むデータは
" ... "
で囲まれます。 (二重引用符)[以下の例のように]では、インポートはこれをどのように処理できますか?
解決策
BULK挿入を使用している場合、二重引用符を処理する方法はありません。データは二重引用符で行に挿入されます。データをテーブルに挿入した後、それらの二重引用符を'に置き換えることができます。 '。
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')
3)一部の行に不正なデータがあるかどうかを追跡するには、どのインポートがスキップされますか?(インポートはインポートできない行をスキップしますか?
解決策
無効なデータまたは形式のためにテーブルにロードされない行を処理するには、ERRORFILEプロパティを使用して処理できます。エラーファイル名を指定すると、エラーのある行がエラーファイルに書き込まれます。コードは次のようになります。
BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '\n', --Use to shift the control to next row
ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
TABLOCK
)