Конференция "Прочее" » Excel->MS SQL Server
 
  • MsGuns © (20.03.16 15:38) [0]
    При импорте таблицы Excel (2003) в MS SQL Server (2008) с помощью Сервиса Данных значение некоторых ячеек (10 символов-цифр, первая 9) не попадает в таблицу (NULL). Пробовал напрямую со штатного IDE (что-типа SQL EM) запросом BULK INSERT ... с csv, полученным из самого экселя.
    Но две проблемы:
    1) надо создавать исходную таблицу с нужным кол-вом полей, что не очень хорошо
    2) Проблемы с кодировкой - в БД SQL вместо русских букв заносятся кракозябры.

    В справке  посмотрел что можно через INSERT .. INTO .. с созданием новой таблицы, но в BULK надо как-то хитро подставлять OPENROWSET, что у меня уже два часа не выходит.

    Если можно, помогите с самым простым примером
  • MsGuns © (20.03.16 15:39) [1]
    Поправочка : MS SQL Server 2012
  • эндсоувот © (20.03.16 20:19) [2]
    вариантов примерно миллиард.
    первый:
    подключить книгу к серверу как файл данных (линкованный источник)

    второй:
    select *
    from openxml(:p_xml_body,'//row')
    with (field1 varchar(255) '@field1',
           field2 varchar(255) '@field2',
           .......
    )

    третий:
    справа от области данных ввести формулу, которая сделает строку вида insert into ... values();
    растянуть по высоте, Ctrl+A Ctrl+Ins, дальше вставить в em

    ....
  • Amir1 © (21.03.16 13:10) [3]
    Параметр 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$
  • MsGuns © (22.03.16 12:39) [4]
    Спасибо за советы.
    Все сделал несколько проще (время поджимало, некогда было экспериментировать) - Скачал условно бесплатную SQL Manager Lite for SQL Server и быстренько все сделал :)
Есть новые Нет новых   [134434   +28][b:0][p:0]