Преобразование недопустимых значений при BULK INSERT в SQL - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть набор данных людей и их соответствующих возрастов. Если возраст неизвестен, он помечается как «?». Выглядит примерно так: Индивидуальный | Возраст person1 |? person2 | 8 Затем я получил таблицу в SQL со столбцом VARCHAR для «Индивидуального» и столбцом INT для «Возраст». Очевидно, что когда я запускаю BULK INSERT:

WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
);

и получаю ошибки, когда '?' (char) значения пытаются вставить в столбец INT.

Что мне было интересно, если бы был способ при обнаружении недопустимого значения, вместо этого просто вставить значение NULL?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Я не уверен, как вы собираете данные, которые нужно вставить, но вы можете использовать оператор Case When и сделать что-то вроде этого:

declare @age varchar(10) 
set @age ='?'
insert into [dbo].[IndTbl]([Individual],[Age])
select 'person1', case @age when '?' then Null else @age end
0 голосов
/ 16 апреля 2020

Если вы предпочитаете выполнять очистку данных в коде, вы можете обратиться к «мутатору».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...