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

Откуда: Дубна
Сообщений: 185
Хочу прочитать данные из всех файлов Excel (xlsx), лежащих в папке.
-- Читаем список файлов в таблицу:
CREATE TABLE #dir (fname varchar(255), d int, f int)
INSERT INTO #dir EXECUTE master.dbo.xp_dirtree 'D:\...\091209_xlsx', 1, 1
DROP TABLE Tumen_files SELECT fname INTO Tumen_files FROM #dir
DROP TABLE #dir

--SELECT * FROM Tumen_files

-- Берём данные из файлов по списку:
declare F cursor for
	SELECT fname FROM Tumen_files
declare @fname varchar(255)
open F

fetch next from F into @fname
while @@FETCH_STATUS = 0
begin
	declare @conn varchar(400)
	set @conn = 'Excel 8.0; Database=D:\...\091209_xlsx\' + @fname
	SELECT * --INTO tmp
		FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', @conn, [Лист1$]) RS
fetch next from F into @fname
end

close F
deallocate F
На строчке FROM OPENROWSET ... ругается: Incorrect syntax near '@conn'...

Ищу альтернативу, но пока не нашёл.
9 дек 09, 10:39    [8038799]     Ответить | Цитировать Сообщить модератору
 Re: Как передать имя файла как переменную в OPENROWSET?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Динамику клейте...
9 дек 09, 10:47    [8038853]     Ответить | Цитировать Сообщить модератору
 Re: Как передать имя файла как переменную в OPENROWSET?  [new]
Дмитрий Исаев
Member

Откуда: Дубна
Сообщений: 185
Как?
9 дек 09, 10:50    [8038874]     Ответить | Цитировать Сообщить модератору
 Re: Как передать имя файла как переменную в OPENROWSET?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Дмитрий Исаев
Как?
Ну а как по вашему динамический запрос строится?
9 дек 09, 10:52    [8038895]     Ответить | Цитировать Сообщить модератору
 Re: Как передать имя файла как переменную в OPENROWSET?  [new]
Дмитрий Исаев
Member

Откуда: Дубна
Сообщений: 185
P.S. Конечно же, для xlsx
	set @conn = 'Data Source=D:\....xlsx;Extended Properties=EXCEL 5.0'
	SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', @fname)...[Лист1$]
Но суть не меняется.
9 дек 09, 10:52    [8038896]     Ответить | Цитировать Сообщить модератору
 Re: Как передать имя файла как переменную в OPENROWSET?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Дмитрий Исаев
P.S. Конечно же, для xlsx
	set @conn = 'Data Source=D:\....xlsx;Extended Properties=EXCEL 5.0'
	SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', @fname)...[Лист1$]
Но суть не меняется.

Динамика должна сождержать весь запрос, начиная с SELECT
9 дек 09, 10:55    [8038930]     Ответить | Цитировать Сообщить модератору
 Re: Как передать имя файла как переменную в OPENROWSET?  [new]
Дмитрий Исаев
Member

Откуда: Дубна
Сообщений: 185
А, динамический запрооос... :) С терминологией у меня тоже пока не очень.
Всё склеил, спасибо!
9 дек 09, 10:58    [8038945]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить