BULK INSERT с непоследовательным числом столбцов

Я пытаюсь загрузить большие данные суммы в SQL-сервере от плоского файла с помощью BULK INSERT. Однако мой файл имеет переменное число столбцов, например, первая строка содержит 14, и второе содержит 4. Это в порядке, я просто хочу сделать таблицу с макс. числом столбцов и загрузить файл в него с ПУСТЫМИ УКАЗАТЕЛЯМИ для недостающих столбцов. Я могу играть с ним от той точки. Но кажется, что SQL Server, при достижении конца строки и наличии большего количества столбцов для заполнения для той же самой строки в конечной таблице, просто идет дальше к следующей строке и пытается поместить данные по той строке к неправильному столбцу таблицы.

Существует ли способ получить поведение, которое я ищу? Существует ли опция, которую я могу использовать для определения этого? Кто-либо столкнулся с этим прежде?

Вот код

BULK INSERT #t
FROM '<path to file>'
WITH 
(
  DATAFILETYPE = 'char',
  KEEPNULLS,
  FIELDTERMINATOR = '#'
)
6
задан ErikE 28 January 2011 в 20:17
поделиться

3 ответа

BULK INSERT не особо гибок. Один из способов - загрузить каждую строку данных во временную таблицу, содержащую один большой столбец varchar. После загрузки вы затем анализируете каждую строку, используя свои собственные процедуры.

5
ответ дан 10 December 2019 в 02:45
поделиться

Попробуйте указать терминатор ROW вместе с указателем конца поля.

BULK INSERT #t 
FROM '<path to file>' 
WITH  
( 
  DATAFILETYPE = 'char', 
  KEEPNULLS, 
  FIELDTERMINATOR = '#',
  ROWTERMINATOR = '\n' --Or whatever signifies the end of a row in your flatfile.
) 

Дополнительную информацию об этом можно найти здесь:

http://msdn.microsoft.com/en-us/library/ms191485.aspx

-1
ответ дан 10 December 2019 в 02:45
поделиться

Различное количество столбцов означает, что он не может быть проанализирован код массовой вставки. Как узнать правильное количество столбцов? Что, если вы предоставите слишком много?

Вам придется загрузить его в таблицу с 4 столбцами, а затем разделить остальные (или один большой столбец) Или предварительно обработать его, чтобы сгенерировать равный Число столбцов.

1
ответ дан 10 December 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: