web-dev-qa-db-ja.com

SQL Server Management StudioへのCSVファイルのインポート-使用可能なテーブルがありません

データベースの既存のテーブルにデータを挿入するためにcsvファイルをインポートしようとしています。ウィザードを実行しますが、宛先のソーステーブルとビューを選択する場合、何も選択できません。新しいテーブルを作成しようとしていると思っているだけです。

助言がありますか?ありがとう!

15
RandyLahey

ウィザードをスキップして、BULK INSERT、ここに例があります:

BULK
INSERT CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO

完全な例: SQL SERVER –一括挿入を使用してCSVファイルをSQL Serverにインポート– SQL Serverにカンマ区切りファイルをロード

26
KM.

シリルの答えは正しい道に沿っています。ただし、SQL Server 2017(14.x)CTP 1.1以降、真のCSV準拠ソリューションが存在します。

これを使って

BULK INSERT destinationtable
FROM 'filepath'
WITH
(
FORMAT = 'CSV'
)
GO

しかし問題があります。データでNULLを使用してNULLを示す場合、MSSQLSMSはNULLを有効なNULL値として受け入れないため、それらを削除する必要があります。 「、NULL」を「、」に検索/置換します

例(4列):

1,NULL,test,"Escaped text with comma, this works"

このようにフォーマットする必要があります:

1,,test,"Escaped text with comma, this works"

NULL挿入の問題については、 SQLはBULK INSERTでNULL値を挿入しない を参照してください。

詳細は https://docs.Microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017 にアクセスできます情報。

1
ChrisBeamond

複数のオプションがあります。

  1. dTSウィザードの使用
  2. プログラミングによって

c#のdtsパスまたはコードを知るには

http://sqlcopy.blogspot.in/2012/07/bulk-sql-to-sql-sql-to-csv-csv-to-sql.html(デッドリンク)

0
Raj kumar