У меня возникли проблемы с массой вставки файла, содержащего поле в тексте типа данных, и оно содержит вхождения, а разделитель для полей - это трубы »| " и терминатор строки «| \ n»Массовая вставка файла с текстовым полем с возвратом каретки (входит)
У меня получается ошибка усечения полей рядом с текстовым полем. Я думаю, что основная вставка думает, что входящие во второе поле следующие строки.
DECLARE @sql varchar(2000)
PRINT 'xyz table'
SET @sql =
'BULK INSERT xyz
FROM ''\\' + @@servername + '\Import\xyz.txt''
WITH
(
DATAFILETYPE = ''char'',
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''|\n'',
TABLOCK,
ROWS_PER_BATCH = 2000,
MAXERRORS = 1000
)
'
PRINT @sql
EXECUTE (@sql)
PRINT ''
GO
Это пример данных
467507**|**08-20-09\
[8:55:03 AM] *** [email protected] is Not Available [Ext. away]\(CR)
[9:00:57 AM] *** [email protected] is Online [Online]\(CR)
[9:01:00 AM] <jeffp> Howdy. Time slip update game! Update TS#467493 & 467507 with a (CR)comment and see if you win! [9:01:30 AM] *** [email protected] is Away [Away]\
\(CR)
08-18-09\(CR)
[10:13:15 AM] *** [email protected] is Online [Online]\(CR)
[10:13:59 AM] <jeffp> Howdy; welcome back from lunch.. Just pinging you for an update in TS#467493 & 467507. Since 467493 is pri9, want a stock e-mail to go out to the customer to get them moving?\(CR)
[10:14:47 AM] <[email protected]> thats ok i got it\(CR)
[10:14:53 AM] <jeffp> Aiight.**|**2009-08-18 00:00:00**|**2009-08-20 00:00:00**|**JDP**|**JDP**|**
Схема таблицы:
create table xyz
(
xyz_id VARCHAR(200), --INT TO VARCHAR
notes text,
create_date varchar(32), --DATETIME
create_user varchar(12),
modify_date varchar(32), --DATETIME
modify_user varchar(12)
)
Как вы можете видеть (ну, не может видеть) там входит (отмеченные CR) и объемная вставка смешивает их с новой строкой.
Любая помощь будет оценена по достоинству.
Thanks
Как вы знаете, когда строка действительно заканчивается? –
Вы уверены, что ограничитель строк \ n, не \ r или \ r \ n? –
конец строки «| \ n», просто второй второй JDP –