CSV ファイルに含まれる大量のデータを SQL データベースにインポートしようとしています。CSV のサイズは 4g です。CSV には 329 列と 300,000 行以上のデータがあります。これまでのところ、インポートしたデータを保持するデータベースとテーブルを正常に作成できました。データには、ストリング (VARCHAR(x))、数値 (INT)、および日付 (DATE) が含まれます。
CSV ファイルに含まれるデータは区切り記号「,」で区切られますが、すべてのデータ フィールドは二重引用符で囲まれ、一部のフィールドにはデータ値が含まれていません。以下は、データのモック例です。
"123244234","09/12/2012","名","姓","住所 1","","","555-555-5555","","CountryCode"
調査の結果、データをインポートする最も簡単な方法は、BCP を使用してフォーマット ファイルを作成し、それを BULK INSERT で使用することであると判断しました。唯一の可能性は、フォーマット ファイルをフォーマットして二重引用符を削除することです。フォーマット ファイルなしでインポートしようとすると、最初の列の最初の行が数値であり、その前後に "" があるため、行 1 で失敗します。
ダミー エントリを使用して二重引用符を削除する方法について説明している次のリンクを確認しました。. この場合、それは多くの手動編集です。フォーマットファイルを編集するより良い方法を知っている人はいますか?? フォーマット ファイルのサンプルを次に示します。
10.0
329
1 SQLCHAR 0 12 "," 1 NPI ""
2 SQLCHAR 0 12 "," 2 Entity Type Code ""
3 SQLCHAR 0 12 "," 3 Replacement NPI ""
4 SQLCHAR 0 9 "," 4 Employer Identification Number (EIN) SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 70 "," 5 Provider Organization Name (Legal Business Name) SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 35 "," 6 Provider Last Name (Legal Name) SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 20 "," 7 Provider First Name SQL_Latin1_General_CP1_CI_AS
8 SQLCHAR 0 20 "," 8 Provider Middle Name SQL_Latin1_General_CP1_CI_AS
9 SQLCHAR 0 5 "," 9 Provider Name Prefix Text SQL_Latin1_General_CP1_CI_AS
10 SQLCHAR 0 5 "," 10 Provider Name Suffix Text