DWH-ETL-OLAP
July 12, 2019

SQL Server: Импорт CSV созданный в PostgreSQL

Пытаюсь сейчас импортнуть csv на гигабайт, выгруженный из postgres на linux.

Как выяснил, формат файла такой, разделитель строк - запятая, перевод строки - LF (новая строка), т.е. \n, Тогда как в винде \r\n. И SQL Server в инструкции BULK INSERT автоматом добавляет \r, если указать ему только \n.

Т.е. вот так не сработает

BULK INSERT [dbo].[visits_all_lc_stg] 
FROM 'D:\LandZone\visits_all_lc.csv' WITH (TABLOCK, FORMAT='CSV', ROWTERMINATOR = '\n');

Надо вот так:

BULK INSERT [dbo].[visits_all_lc_stg] 
FROM 'D:\LandZone\visits_all_lc.csv' WITH (TABLOCK, FORMAT='CSV', ROWTERMINATOR = '0x0a');

Примечание: 0x0A является \n символом новой строки. 0x0D в \r символом возврата.