#sql-server #bcp
#sql-сервер #bcp
Вопрос:
Мне нужна помощь с плоским файлом, предоставляемым нам третьей стороной, который использует:
Field1[**]Field2[**]Field3[**]Field4[<>]Field1[**]Field2[**]Field3[**]Field4[<>]
как:
Row1:Field1 Field2 Field3 Field4
Row2:Field1 Field2 Field3 Field4
в виде плоского файла. Я хочу иметь возможность импортировать плоский файл непосредственно в таблицу через BCP или Openrowset или массовую вставку с SSMS 17.5
Я предполагаю, что мне нужен файл формата, но я понятия не имею, как определить эти разделители! Квадратные скобки являются частью разделителя.
Моей единственной альтернативой является CLOB и Replace, но это двойная обработка..
Комментарии:
1. Извините, в спешке, это может вам помочь: mssqltips.com/sqlservertip/5345 /… (массовая вставка позволяет указать разделители строк и полей)
2. BCP также имеет параметры для указания
row_term
иfield_term
3. Вам просто нужно указать ограничитель строки и поля для массовой вставки. Что-то вроде:
BULK INSERT YourTable FROM 'C:someFileLocationfilename.txt' WITH ( FIELDTERMINATOR = '[**]', ROWTERMINATOR = '[<>]' );
. Не уверен, что BulkInsert будет жаловаться на эти разделители. @MatBailie первое сообщение — хороший способ справиться с этим
Ответ №1:
Спасибо всем
Не удалось увидеть дерево для деревьев.
BULK INSERT [dbo].[My Table]
FROM 'F:Myfile.txt'
WITH (
FIELDTERMINATOR = '[**]'
,ROWTERMINATOR = '[<>]'
,FIRSTROW=1
)
РЕШЕНО 🙂