Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Преобразование даты при импорте  [new]
Badhabit
Member

Откуда:
Сообщений: 90
Добрый день. Я импортирую данные в БД из xml файла через SqlXmlBulkLoad примерно таким скриптом:
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")  
objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI"  
objBL.ErrorLogFile = "C:\error.log"  
objBL.CheckConstraints = True  
objBL.Transaction = False  
objBL.KeepIdentity = False  
objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"  
Set objBL = Nothing  
MsgBox "Done."  

Проблема в том, что что даты у меня в xml не по стандарту (не yyyy.dd.mm а - dd.mm.yyyy), а в БД тип даты datetime2(7) Подскажите, можно ли как-нибудь сделать чтобы при импорте не выскакивала ошибка преобразования типов? Conversion failed when converting date and/or time from character string?
15 ноя 16, 20:17    [19897656]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты при импорте  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Значит схема неверно описывает данные.
16 ноя 16, 11:22    [19899203]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты при импорте  [new]
aleks2
Guest
Badhabit
Добрый день. Я импортирую данные в БД из xml файла через SqlXmlBulkLoad примерно таким скриптом:
Set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0")  
objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI"  
objBL.ErrorLogFile = "C:\error.log"  
objBL.CheckConstraints = True  
objBL.Transaction = False  
objBL.KeepIdentity = False  
objBL.Execute "SampleSchema.xml", "SampleXMLData.xml"  
Set objBL = Nothing  
MsgBox "Done."  

Проблема в том, что что даты у меня в xml не по стандарту (не yyyy.dd.mm а - dd.mm.yyyy), а в БД тип даты datetime2(7) Подскажите, можно ли как-нибудь сделать чтобы при импорте не выскакивала ошибка преобразования типов? Conversion failed when converting date and/or time from character string?

1. Грузить как строку.
2. В базе конвертить convert(datetime, str, nnn).

ЗЫ. Главное: даты в xml должны быть по стандарту xml, т.е. ISO-даты.
16 ноя 16, 13:04    [19899715]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты при импорте  [new]
aleks2
Guest
Ах да, завсегда есть возможность грузить через задний проход.

1. Делаем юзера спецом для загрузки.
2. Ставим ему дефолтом немецкий? язык, ну короче, чтобы 'dd.mm.yyyy' конвертировалась правильно в дату.
3. Грузим из под этого юзера.
16 ноя 16, 13:12    [19899759]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование даты при импорте  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Там SampleSchema конфликтует с SampleXMLData, как я понимаю. Тут или схему привести к text или ее вообще не указывать и все грузить в текст, а потом конвертировать.
16 ноя 16, 14:12    [19900084]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить