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

Откуда:
Сообщений: 50
Задача подгрузить данные из Excel в MS SQL 2000. Подскажите как это сделать?
MSDN читал: там написано:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

Что значит: "...xactions"? Может кто делал что-то подобное? Может примерчик маленький кто

подкинет?
Заранее спасибо.
9 апр 04, 14:26    [621150]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
Что значит: "...xactions"?

А значит это - имя таблицы или именованного диапазона экселя.
9 апр 04, 14:29    [621160]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
svadn
Member

Откуда:
Сообщений: 224
Например так:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...Лист1$
9 апр 04, 14:34    [621187]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
hare77
Member

Откуда:
Сообщений: 50
Ок.
У меня есть файл xls, который лежит на диске d и называется pr1.xls, то есть путь : d/pr1.xls. В нем есть лист, который называется page1. Как мне получить данные из первой колонки этого файла на этом листе?
9 апр 04, 15:29    [621426]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
svadn
Member

Откуда:
Сообщений: 224
SELECT Col1
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\pr1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...Page1$
9 апр 04, 15:38    [621455]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
hare77
Member

Откуда:
Сообщений: 50
Пишу в Query Analyzer-е:
SELECT Col1 

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\pr1.xls";Password=;Extended properties=Excel 5.0')...Page1$

И на эту строчку сервер сказал:
Server: Msg 7314, Level 16, State 1, Line 1

OLE DB provider 'Microsoft.Jet.OLEDB.4.0' does not contain table 'Page1$'. The table either does not exist or the current user does not have permissions on that table.


Может надо было что-то написать вместо ...?
9 апр 04, 15:46    [621484]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
svadn
Member

Откуда:
Сообщений: 224
Добавь в файл новый лист, назови его LIST1,
скопируй туда данные и запусти в QA скрипт.
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\pr1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...LIST1$
у меня работает...
Да и файл должен быть закрыт.
9 апр 04, 15:53    [621504]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
эта ... сиквел на локальном компе или где-то неподалече?
9 апр 04, 15:57    [621517]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
hare77
Member

Откуда:
Сообщений: 50
Сделал. Результат тот же. Файл закрыт. А почему QA мне говорит
... does not contain table 'LIST1$ ...
Это же у меня лист в таблице, а не таблица?
9 апр 04, 15:59    [621520]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
bushmen
Member

Откуда: г. Москва
Сообщений: 828
Файл у тебя лежит на том же компьютере, на котором SQL Server стоит?
9 апр 04, 16:01    [621527]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
hare77
Member

Откуда:
Сообщений: 50
Не я клиент. А сервер на другой машине у админа. Надо чтобы файл лежал там же где и сервер стоит? А куда его положить? Можно просто на любой диск к нему (админу на сервер)?
9 апр 04, 16:04    [621534]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
svadn
Member

Откуда:
Сообщений: 224
SQL считает что каждый лист это таблица
9 апр 04, 16:04    [621536]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
svadn
Member

Откуда:
Сообщений: 224
тогда укажи стевой путь \\server\d\pr1.xls
9 апр 04, 16:06    [621544]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
hare77
Member

Откуда:
Сообщений: 50
автор
SQL считает что каждый лист это таблица

Понятно.

Но все-таки где должен лежать файл *.xls? Обязательно на сервере или может на SQL-клиенте?
9 апр 04, 16:06    [621550]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
svadn
Member

Откуда:
Сообщений: 224
где угодно, только ресурс должен быть доступным
9 апр 04, 16:08    [621556]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
hare77
Member

Откуда:
Сообщений: 50
Строка запроса:
SELECT * 

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="\\ivanov\d\pr1.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...LIST1$


Ответ сервера:
Server: Msg 7399, Level 16, State 1, Line 1

OLE DB provider 'Microsoft.Jet.OLEDB.4.0' reported an error. The provider did not give any information about the error.
9 апр 04, 16:10    [621560]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
svadn
Member

Откуда:
Сообщений: 224
сделай пуск-выполнить \\ivanov\d\pr1.xls
файл должен открыться
9 апр 04, 16:14    [621577]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
hare77
Member

Откуда:
Сообщений: 50
УРА!!!!!
Все получилось!!!!
Переложил файл pr1.xls с диска D: в директория d1 и дал ей доступ (ну расшарил в смысле), сказал путь: \\ivanov\d1\pr1.xls и все получилось.

Всем большое спасибо!
9 апр 04, 16:22    [621612]     Ответить | Цитировать Сообщить модератору
 Re: OpenDataSource  [new]
SkyWalker
Member

Откуда:
Сообщений: 320
Просто как еше один вариант



SELECT * FROM
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=c:file.xls', Sheet1$)
9 апр 04, 16:58    [621741]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить