私はこれとまったく同じ問題を抱えていたため、損失時間が発生したため、自分の調査結果と解決策を共有することになりました。
1.Excelファイルを使用する
これが私が採用したアプローチです。csvファイルを使用する代わりに、以下のような内容のExcelファイル(.xlsx)を使用しました。
id username email token website
johndoe johndoe@divostar.com divostar.com
bobstone bobstone@divosays.com divosays.com
id列には値がないことに注意してください。
次に、Microsoft SQL Server Management Studioを使用してDBに接続し、データベースを右クリックして、[データのインポート]を選択します(タスクの下のサブメニュー)。ソースとしてMicrosoftExcelを選択します。「ソーステーブルとビューの選択」という段階に到達したら、[マッピングの編集]をクリックします。宛先の下のid
列で、それをクリックして無視を選択します。Enable Identity insert
別のデータベースからデータをインポートしていて、ソースデータベースの自動インクリメントIDを維持したい場合に備えて、IDを維持したい場合を除いて、チェックしないでください。終了に進み、それだけです。データはスムーズにインポートされます。
2.CSVファイルを使用する
csvファイルで、データが次のようになっていることを確認してください。
id,username,email,token,website
,johndoe,johndoe@divostar.com,,divostar.com
,bobstone,bobstone@divosays.com,,divosays.com
以下のクエリを実行します。
BULK INSERT Metrics FROM 'D:\Data Management\Data\CSV2\Production Data 2004 - 2016.csv '
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');
このアプローチの問題は、CSVがDBサーバーまたはDBがアクセスできる共有フォルダーにある必要があることです。そうしないと、「ファイルを開けません。オペレーティングシステムがエラーコード21を返しました(デバイスの準備ができていません)」などのエラーが発生する可能性があります。 )」。
リモートデータベースに接続している場合は、CSVをそのサーバー上のディレクトリにアップロードし、一括挿入でパスを参照できます。
3.CSVファイルとMicrosoftSQLServerManagementStudioのインポートオプションを使用する
最初のアプローチと同様に、インポートデータを起動します。ソースについては、フラットファイルソースを選択し、CSVファイルを参照します。正しいメニュー([一般]、[列]、[詳細]、[プレビュー])に問題がないことを確認してください。列メニュー(列区切り文字)で正しい区切り文字を設定してください。上記のExcelアプローチと同様に、[マッピングの編集]をクリックします。宛先の下のid列で、それをクリックして[無視]を選択します。
終了に進み、それだけです。データはスムーズにインポートされます。