708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
|
||||||
1 | ||||||
Несовпадение типов при вставке в базу данных18.03.2013, 10:09. Показов 5259. Ответов 11
Метки нет (Все метки)
Всем привет!
Народ, делаю импорт данных из Excel в MSSQL. Сначала залил все данные в DataTable, а уже из нее с помощью SQLBulkCopy пытаюсь сделать вставку на сервер. Однако возникает проблема: на сервере одно из полей таблицы имеет тип binary(8), а в Excel'e соответствующий стобец значения хранит в текстовом формате, соответственно при импорте ошибка "Данное значение типа String из источника данных не может быть преобразовано в тип binary указанного столбца назначения.". Подскажите пожалуйста где и что нужно поправить. Вот код:
0
|
18.03.2013, 10:09 | |
Ответы с готовыми решениями:
11
Несоответствие типов данных при работе с БД Несовпадение типов данных при вызове функций Авто дописывание данных при вставке в базу данных Непонятное исключение при вставке в базу данных |
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
|
|
18.03.2013, 10:49 | 2 |
дык тут бы надо саму таблицу в БД увидеть. Может именно в ней нужный столбец имеет тип binary. Тогда ты туда строку не загонишь.
1
|
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
|
|
18.03.2013, 10:53 [ТС] | 3 |
0
|
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
|
|
18.03.2013, 10:59 | 4 |
а изменить тип данных в этом столбце на строковый никак?
0
|
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
|
|
18.03.2013, 10:59 [ТС] | 5 |
Просто ситуация какая, создатели БД сделали так, что вместо интовых ID записей, используются бинарники. Та таблица, в которую производится вставка создана мной лично. Чтобы использовать join к ней других таблиц можно сравнивать бинарники сконвертировав их в varchar, тогда и проблем со вставкой нет - можно заливать как текст, но, нет ли здесь каких либо подводных камней при таком обращении с бинарными записями? Если вопрос кому-то покажется нубским, уж извините, опыт работы с БД небольшой пока)
0
|
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
|
|
18.03.2013, 11:03 | 6 |
а если перед экспортом данных на сервер конвертировать данные проблемного столбца в массив байт? Просто код изменится, зато структура таблицы БД будет как надо.
Хотя это тоже некрасиво выходит: так код совсем крохотный, а с конвертированием вырастет порядком
1
|
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
|
|
18.03.2013, 11:07 [ТС] | 7 |
Видно ничего другого не остается, хотелось конечно обойтись без циклов, вставляя строки всем скопом, но наверное на времени обработки это не отразится. Спасибо за помощь!
0
|
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
|
|
18.03.2013, 11:13 | 8 |
ну вот ты заполнил DataAdapter данными из экселя. Только теперь начинай конвертацию. Тогда действительно особо не потеряешь времени. А то если будешь поштучно вытаскивать данные из ячеек, то тогда да - время обработки сильно возрасти может. Хотя если таблица небольшая, то и разницы никакой.
ИМХО, разрабы БД не предполагали, что кому-то понадобится автоматом из экселя данные сливать, вот и замутили такое со структурой таблиц БД.
0
|
16 / 12 / 4
Регистрация: 28.09.2015
Сообщений: 278
|
|
30.05.2017, 13:50 | 10 |
как решили проблему?
0
|
1159 / 945 / 154
Регистрация: 25.07.2015
Сообщений: 2,103
|
|
30.05.2017, 19:58 | 11 |
Вопрос риторический )))
Её другим способом, кроме как конвертацией данных , о котором писал выше Юпатов Дмитрий, никак не решишь. Или менять тип столбца в БД.
0
|
16 / 12 / 4
Регистрация: 28.09.2015
Сообщений: 278
|
|
02.06.2017, 10:02 | 12 |
ну на всякий случай напишу ( вдруг кому понадобиться )
я мучася с date и numeric Данное значение типа String из источника данных не может быть преобразовано в тип date/numeric указанного столбца назначения." 1) менять в БД поле на тип String - но потом проблем много 2) С датой. В exele точно должна быть дата а не String (дата и числа привязаны к правой границе а текст к левой ) у меня было так что в exel после сцеплений ячеек я получал дату вида 01.02.2014 но она считалась как текст пришлось счеплять ячейки и получать результат в виде числа (количество часов от начала отсчета даты или как то так ) а потом это число в ячейке делать "формат дата" тогда все норм 3) numeric в exel 2255.22 должна быть 2255,22 или на оборот уже не помню , короче прикол с "," и "."
0
|
02.06.2017, 10:02 | |
02.06.2017, 10:02 | |
Помогаю со студенческими работами здесь
12
несовпадение типов данных Несовпадение типов данных Несовпадение типов при фильтрации Несовпадение типов при проверки ячейки в теле цикла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |