Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Заполнение таблицы базы данных данными из Excel по таймеру  [new]
Archer123
Member

Откуда:
Сообщений: 6
Доброго времени суток. Существует файл Excel c отчетами, необходимо добавить эти данные в уже спроектированные таблицы БД SQL Server через определенный промежуток времени. Знаю, что для этого необходимо использовать таймер.
Для извлечения данных использовал Microsoft.ACE.OLEDB.12.0
Вот что имею EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

EXEC sp_addlinkedserver
@server = 'Server4',
@srvproduct = 'Excel', [ID_Index]
@provider = 'Microsoft.ACE.OLEDB.12.0',
@datasrc = 'C:\test\2.xlsx',
@provstr = 'Excel 12.0;IMEX=1;HDR=YES;'

select * from openquery (Server4, 'Select * from [дек12$F18:F22]')




INSERT INTO [FininceAnalysis_DW].[dbo].[Index_Dim]([Name])
select * from openquery (Server4, 'Select * from [дек12$F25:F29]')

INSERT INTO [FininceAnalysis_DW].[dbo].[Experement]([NAME])
select * from openquery (Server4, 'Select * from [дек12$F25:F29]')

select * from [FininceAnalysis_DW].[dbo].[Experement]

Как можно записать данные только из одной ячейки? Можно, ли тут что-то изменить Select * from [дек12$F25:F29]')?
20 апр 17, 13:20    [20418530]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы базы данных данными из Excel по таймеру  [new]
buven
Member

Откуда:
Сообщений: 792
Archer123
Как можно записать данные только из одной ячейки? Можно, ли тут что-то изменить Select * from [дек12$F25:F29]')?

Если под словом ячейка вы подразумеваете столбец - можно.
Смело пишите
select [ячека] from [дек12$F25:F29]


Но в целом как то ваше решение звучит кривовастинько на мой вкус...
20 апр 17, 14:15    [20418828]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы базы данных данными из Excel по таймеру  [new]
мегамозг
Member

Откуда: Екатеринбург
Сообщений: 71
Archer123
...

Как можно записать данные только из одной ячейки? Можно, ли тут что-то изменить Select * from [дек12$F25:F29]')?

Нужно добавить ограничение на значение ячейки.
Select * from [дек12$F25:F29] where название_столбца = значение
Если только 1 ячейка в диапазоне дек12$F25:F29 имеет указанное значение, то запросом будет добавлена только 1 строка.
20 апр 17, 14:27    [20418871]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы базы данных данными из Excel по таймеру  [new]
Archer123
Member

Откуда:
Сообщений: 6
buven,
Спасибо, а вы что посоветуете?
20 апр 17, 14:27    [20418873]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы базы данных данными из Excel по таймеру  [new]
Archer123
Member

Откуда:
Сообщений: 6
мегамозг,

спасибо
а можно что-то вроде такого написать?
select * from openquery (Server4, 'Select * from [дек12$B22:B23] where [дек12$B22:B23] = NOT NULL ')
20 апр 17, 14:43    [20418937]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы базы данных данными из Excel по таймеру  [new]
Archer123
Member

Откуда:
Сообщений: 6
мегамозг,

Нужно, чтобы нулевые значения не записывались
20 апр 17, 14:45    [20418953]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить