Мне нужно загрузить лист Excel в базу данных. Что я делаю с запросом
SELECT * INTO temp FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Dokumente und Einstellungen\l.varada\Desktop\BA-Control.xls',
'SELECT * FROM [qry_BA_Controlling (Report)$]')
Здесь C: \ Dokumente und Einstellungen \ l.varada \ Desktop \ BA-Control.xls - это путь, из которого необходимо получить файл Excel.
qry_BA_Controlling (Report) - это имя рабочего листа.
Таким образом, при выполнении запроса создается таблица с именем temp. С записями, которые заполняются из Excel.
Теперь у меня есть поле даты в Excel. иногда значения этого поля не загружаются должным образом во временную таблицу. Значения для этого поля даты установлены в NULL, хотя они имеют значения в EXCEL.
EDIT
Я изменил свой запрос так,
Insert into temp Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Dokumente und Einstellungen\l.varada\Desktop\BA-Control.xls',
HDR=YES', 'SELECT * FROM [qry_BA_Controlling (Report)$]')
Здесь temp - это существующая таблица, я определил тип даты поля [дата создания] для varchar и загрузил Excel. Затем я использовал convert , чтобы изменить тип данных на правильный формат.
update temp set [Creation date] = CONVERT (varchar,[Creation date],101)
Даже сейчас он заполняет значения NULL. Или это преобразование необходимо выполнить при загрузке. если да, пожалуйста, дайте мне знать.
Я думаю, что причина этого в том, что первые несколько значений этого столбца являются пробелами, и после этого у него есть значения. Поскольку он определяет тип данных путем проверки первых нескольких строк. Затем он присваивает NULL. Пожалуйста, предложите мне альтернатива.