2015-06-15 4 views
0

Я создал приложение mvc 4, которое может загружать данные в базу данных с использованием метода массовой загрузки копии на основе sql.Привязать значение по умолчанию, если значение столбца excel для столбца null в sql bulk copy upload

Как только я выберу файл excel, он может загружать данные в систему.

это работает отлично, теперь я хочу, чтобы добавить значение по умолчанию, если первенствует поле равно нулю

это как извлечь значения столбцов первенствует

 "s1.Gender, " + 
    "s1.Country_of_Birth, " + 
    "s1.Date_of_Birth, " + 

Я хочу, чтобы добавить значение по умолчанию от уровня кода , Я уже обрабатываю это с использованием уровня базы данных.

, например, добавить значение по умолчанию для «дата рождения» я добавил следующее ограничение

ALTER TABLE [dbo].[tbl_HEI_student] ADD CONSTRAINT [DF_tbl_HEI_student_Date_of_Birth] DEFAULT (getdate()) FOR [Date_of_Birth] 

Но когда я загрузить файл первенствует в БД, метод загрузки копии SQL насыпной игнорирует, добавив, что базы данных значения по умолчанию.

Как добавить значение по умолчанию из метода контроллера

ответ

1

Ваша проблема должна быть, что колонка позволяет NULLS.

В случае, если ваша колонка разрешает NULL, и вы указываете значение NULL на вставке, введите NULL WILL. Если для столбца не указано значение, будет рассмотрен DEFAULT.

Установите свою колонку в NOT NULL.

ALTER TABLE [dbo].[tbl_HEI_student] ALTER COLUMN [Date_of_Birth] DATE NOT NULL 

Вот Default Definition.

EDIT:

Как вы уже заметили, вы не можете BulkInsert в NULLS к тому, что колонны и сделать значение DEFAULT преобладают на стороне SqlServer, и NOT NULL я предложил будет применять, что либо значение не подается или что-то другое, кроме NULL.

Я могу видеть несколько вариантов.

  • Либо иметь с ними дело .NET сторона, установив значение используемого по умолчанию (вы должны показать вам .NET код, если вы хотите помочь с этим)
  • делают одну большую для строк со значением, а другой для строки без и удаления сопоставления для этого столбца, ограничение по умолчанию примет действие
  • Установка строки назад, чтобы разрешить NULLS, делать большую часть, как вы делали, и делать обновление после того, как объем, чтобы установить значение NULLS в значение по умолчанию ,

Я знаю BULK INSERT и BCP оба имеют спецификатор, как показано here дело с NULL значениями. Тот же вариант доступен в .NET SqlBulkCopy options.

Here Другой вопрос, связанный с вашей проблемой.

Имейте в виду, что ваша схема базы данных должна помочь вам внедрить ваши бизнес-правила и сохранить ваши данные в чистоте.Если дата никогда не должна быть NULL, сохраните столбец как NOT NULL и соответствующим образом выполните свое решение.

+0

Как только я добавлю, что массовая загрузка не позволяет мне загружать эти данные в БД, что мне делать? – Chathz

+0

какая ошибка возвращается? – mxix

+0

это ошибка 'Column 'Date_of_Birth' не позволяет DBNull.Value.' – Chathz

Смежные вопросы