Excel: генерировать SQL-запрос из огромного Excel - PullRequest
0 голосов
/ 01 марта 2010

У меня огромное превосходство с тысячами строк, и мне нужно сгенерировать SQL-запрос для вставки данных в базу данных SQL-сервера.

Формат Excel следующий

1 | string1 | another string
    string2
    string3
2 | AAA AAA | ZZZZZZZ
    BB BBBB
    CCCC CC

Первый столбец - это счетчик строк, это не имеет значения. Второй столбец - это группа строк, разделенных переносными строками. Третий столбец - это строка, которая должна быть связана с каждой из строк в столбце 2.

Поэтому мне нужно сгенерировать следующие запросы:

INSERT INTO SomeTable VALUES ('string1', 'another string')
INSERT INTO SomeTable VALUES ('string2', 'another string')
INSERT INTO SomeTable VALUES ('string3', 'another string')
INSERT INTO SomeTable VALUES ('AAA AAA', 'ZZZZZZZ')
INSERT INTO SomeTable VALUES ('BB BBBB', 'ZZZZZZZ')
INSERT INTO SomeTable VALUES ('CCCC CC', 'ZZZZZZZ')

Понятно, что мне нужно делать?

К сожалению, у меня такие плохие способности, что я не могу придумать, как это сделать.

Любая помощь?

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 01 марта 2010

Вот, пожалуйста,

Предполагая, что число находится в столбце A, и две строки в столбцах B и C соответственно

Поместите это в ячейку F2

=IF(C2="",C1,C2)

и это в ячейке I2

="INSERT INTO SomeTable VALUES('" & B2 & "','" & F2 & "')"

затем скопируйте формулы вверх и вниз в столбцах F и I.

Надеюсь, вы должны увидеть, как это работает

0 голосов
/ 01 марта 2010

Сначала создайте связанный сервер с рабочим листом Excel

declare @server varchar(100),@dropLogins varchar(20)
select @server='myExcelBook',@dropLogins='droplogins'

Exec sp_dropServer @server,@droplogins=@dropLogins    


    EXEC sp_addlinkedserver @server,
       'ACE 12.0',
       'Microsoft.ACE.OLEDB.12.0',
       'c:\MyExcelBooks\myExcelBool.xls',
       NULL,
       'Excel 12.0'

exec sp_linkedServers

ACE 12.0, Excel 12.0 и Microsoft.ACE.Oledb.12.0 являются именами поставщиков для Excel 2007 Если у вас другая версия Excel, вы должны заменить эти литералы правильными. Также необходимо, чтобы Excel был установлен на вашем сервере базы данных.

Как только вы сделали выше ... Вы можете рассматривать каждый лист в Рабочей книге как Таблицу

поэтому вставка данных в SomeTable выглядит следующим образом

Insert SomeTable(column1,Column2,Column3)
Select Column1,Column2+Column3,Column3 from myExcelbook..Sheet1$

Обратите внимание, что знак $ должен быть добавлен к листу, который вы обновляете.

После добавления сервера ссылок вы можете увидеть рабочие таблицы / и диапазоны в разделе Объекты сервера / LinkedServers / myExcelBook / Каталоги / Defautlt / Таблицы

0 голосов
/ 01 марта 2010

Какие БД вы планируете использовать?

Вы знакомы с инструментом 'TOAD'?

...