-
При импорте таблицы Excel (2003) в MS SQL Server (2008) с помощью Сервиса Данных значение некоторых ячеек (10 символов-цифр, первая 9) не попадает в таблицу (NULL). Пробовал напрямую со штатного IDE (что-типа SQL EM) запросом BULK INSERT ... с csv, полученным из самого экселя. Но две проблемы: 1) надо создавать исходную таблицу с нужным кол-вом полей, что не очень хорошо 2) Проблемы с кодировкой - в БД SQL вместо русских букв заносятся кракозябры.
В справке посмотрел что можно через INSERT .. INTO .. с созданием новой таблицы, но в BULK надо как-то хитро подставлять OPENROWSET, что у меня уже два часа не выходит.
Если можно, помогите с самым простым примером
-
Поправочка : MS SQL Server 2012
-
вариантов примерно миллиард. первый: подключить книгу к серверу как файл данных (линкованный источник)
второй: select * from openxml(:p_xml_body,'//row') with (field1 varchar(255) '@field1', field2 varchar(255) '@field2', ....... )
третий: справа от области данных ввести формулу, которая сделает строку вида insert into ... values(); растянуть по высоте, Ctrl+A Ctrl+Ins, дальше вставить в em
....
-
Параметр IMEX должен быть = 1
SELECT * into #111 FROM OPENROWSET ( 'Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; HDR=Yes; IMEX=1; Database=c:\Test.xls', 'select * from [Лист1$]' )
SELECT * into #222 FROM OpenDataSource ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\Test.xls"; User ID=Admin;Password=; Extended properties="Excel 8.0; HDR=Yes; IMEX=1"')...Лист1$
-
Спасибо за советы. Все сделал несколько проще (время поджимало, некогда было экспериментировать) - Скачал условно бесплатную SQL Manager Lite for SQL Server и быстренько все сделал :)
|