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

Откуда:
Сообщений: 3
Добрый день , подскажите как импортировать вот такой файл excel в базу данных . Таблицы excel с объединёнными ячейками . Нужно транспонировать последние 2 столбца в строку. Чтобы поле 1 стало именами столбцов , а поле 2 стало 1 строкой

К сообщению приложен файл (Пустой.numbers - 122Kb) cкачать
29 окт 19, 09:57    [22004771]     Ответить | Цитировать Сообщить модератору
 Re: Импорт excel в ms sql server 2017  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Ekater,

а почему не развернуть в экселе а потом импортировать?
29 окт 19, 09:59    [22004776]     Ответить | Цитировать Сообщить модератору
 Re: Импорт excel в ms sql server 2017  [new]
Ekater
Member

Откуда:
Сообщений: 3
TaPaK, потому что таких строк очень много и excel висит
29 окт 19, 10:00    [22004777]     Ответить | Цитировать Сообщить модератору
 Re: Импорт excel в ms sql server 2017  [new]
Ekater
Member

Откуда:
Сообщений: 3
Добавила в файл результат который хочу получить

К сообщению приложен файл (Пустой 2.xlsx - 6Kb) cкачать
29 окт 19, 10:06    [22004786]     Ответить | Цитировать Сообщить модератору
 Re: Импорт excel в ms sql server 2017  [new]
andy st
Member

Откуда:
Сообщений: 796
Ekater,
в общем виде надо хотя бы пронумеровать строки в экселе для их однозначной идентификации
а в данном случает проканает сей говнокод:
;with x as (select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=d:\Пустой 2.xlsx', 'SELECT * FROM [Лист 1$A2:E9]'))
select Время, Номер, Место, Поде1 as Рыба, Поле2 as Имя
, (select top 1 Поле2 from x where Поде1 = 'Дата') Дата
, (select top 1 Поле2 from x where Поде1 = 'Показать') Показать
, (select top 1 Поле2 from x where Поде1 = 'Узнать') Узнать
, (select top 1 Поле2 from x where Поде1 = 'Разузнать') Разузнать
from x
where x.время is not null

select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=d:\Пустой 2.xlsx', 'SELECT * FROM [Лист 1$A13:I14]')
29 окт 19, 10:23    [22004801]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить