列が1つしかない.csv
ファイルから値をインポートしようとしています。すべての値を1行で取得し続けます。
SELECT BulkColumn
FROM OPENROWSET (BULK 'C:\Temp\myfile.csv', SINGLE_CLOB) MyFile
これは、ファイルコンテンツの最初の行のサンプルです。
Nummer
072XXXXXX63
072XXXXXX76
07XXXXXX66
072XXXXXX4
OPENROWSETドキュメント は、SINGLE_CLOB
オプションを次のように説明しています。
内容をvarchar(max)型の単一行、単一列行セットとして返します
したがって、 STRING_SPLIT
関数(または同様の方法)を使用して文字列を複数の列に分割する必要があります。 フォーマットファイル を使用して行ターミネータを指定しますOPENROWSET
の場合、または BULK INSERT
を使用します。これにより、フォーマットファイルを作成せずに行終端記号を指定できます。
入力ファイルの必要に応じてFIELDTERMINATOR
およびROWTERMINATOR
をカスタマイズすることにより、次のコードを適合させることができます。たとえば、次のコードは 提供されたサンプルファイル でテストされています。
CREATE TABLE #bulkInsert (col1 NVARCHAR(MAX) NULL)
BULK INSERT #bulkInsert
FROM 'C:\Temp\myfile.csv'
WITH (FIELDTERMINATOR = N','
, ROWTERMINATOR = N'0x0a' /* See https://stackoverflow.com/a/26758288/1582862 */
, BATCHSIZE = 50000
, TABLOCK
);
-- The sample rows were correctly bulk loaded, including the header row,
-- which you can remove from your file or filter out after bulk loading
SELECT *
FROM #bulkInsert
--Nummer
--072XXXXXX63
--072XXXXXX76
--07XXXXXX66
--072XXXXXX4