Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Параметры OPENROWSET BULK и BULK INSERT  [new]
aleks222
Member

Откуда:
Сообщений: 959
Есть рабочий insert
BULK INSERT tempdb.dbo.books3 FROM 'C:\Gate\In\a.csv' WITH(DATAFILETYPE='widechar', rowterminator = '\n')

разделитель полей в файле - табуляция.

Никак не могу сообразить аналог DATAFILETYPE='widechar' для openrowset( bulk
Фишка в том, что файл C:\Gate\In\a.csv юникодный.
      select * from
      openrowset( bulk 'C:\Gate\In\a.csv' 
                      , FORMATFILE = 'C:\Gate\In\a.FMT'
                      ) as x;



'C:\Gate\In\a.FMT

11.0
3
1 SQLNCHAR 0 0 "\t" 1 x ""
2 SQLNCHAR 0 0 "\t" 2 y ""
3 SQLNCHAR 0 0 "\r" 3 z Cyrillic_General_CI_AS

Для НЕ юникодного SQLNCHAR меняем на SQLCHAR и все - усе работает

C:\Gate\In\a.csv
20181101 SVX BUD
31 окт 18, 14:02    [21720298]     Ответить | Цитировать Сообщить модератору
 Re: Параметры OPENROWSET BULK и BULK INSERT  [new]
invm
Member

Откуда: Москва
Сообщений: 9349
use tempdb;
go

create table dbo.test (id int, s nvarchar(100));
go

exec xp_cmdshell 'bcp tempdb.dbo.test format nul -T -w -f %TEMP%\FormatFile_test.fmt', no_output;
exec xp_cmdshell 'bcp tempdb.dbo.test format nul -T -w -x -f %TEMP%\FormatFile_test.xml', no_output;

exec xp_cmdshell 'type %TEMP%\FormatFile_test.fmt';
exec xp_cmdshell 'type %TEMP%\FormatFile_test.xml';

exec xp_cmdshell 'del %TEMP%\FormatFile_test.fmt', no_output;
exec xp_cmdshell 'del %TEMP%\FormatFile_test.xml', no_output;
go

drop table dbo.test;
go
?
31 окт 18, 14:22    [21720330]     Ответить | Цитировать Сообщить модератору
 Re: Параметры OPENROWSET BULK и BULK INSERT  [new]
aleks222
Member

Откуда:
Сообщений: 959
ешкин кот!

"\t" надо писать "\t\0"
31 окт 18, 16:18    [21720543]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить