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

Откуда:
Сообщений: 27
Добрый день!
Есть БД в SQL SERVER 2008. Так же есть excel файлы, содержащие таблицы с данными, ктр необходимо импортировать в SQL. Хотелось бы, чтобы пользователь нажатием кнопки на форме мог импортировать данные из excel. При этом д.б. выполнены некоторые условия: при импорте данных должно происходить обновление таблиц, т.е. строки с тем же id, как в excel, д.б. заменены строками из excel, а строки, ктр нет в таблице SQL добавлены в нее из excel. Пробовала просто импортировать данные из excel в SQL- возникли проблемы (MS.JET.OLEDB 4.0 не существует 64битного. Пробовала использовать вместо него ACE.OLEDB.12.0- так же не находит в списке провайдеров).

Подскажите пож., как мне все-таки реализовать задуманное, очень нужно...
11 апр 12, 10:04    [12397290]     Ответить | Цитировать Сообщить модератору
 Re: импорт данных из Excel в SQL с выборкой импортируемых строк  [new]
Glory
Member

Откуда:
Сообщений: 104751
ОлесяТкаченко
при импорте данных должно происходить обновление таблиц, т.е. строки с тем же id, как в excel, д.б. заменены строками из excel, а строки, ктр нет в таблице SQL добавлены в нее из excel.

команда MERGE

ОлесяТкаченко
Пробовала просто импортировать данные из excel в SQL- возникли проблемы

Нужно угадать что ли ваши проблемы ?

ОлесяТкаченко
Пробовала использовать вместо него ACE.OLEDB.12.0- так же не находит в списке провайдеров).

А вы его устанавливали, чтобы увидеть в списке то ?
11 апр 12, 10:09    [12397313]     Ответить | Цитировать Сообщить модератору
 Re: импорт данных из Excel в SQL с выборкой импортируемых строк  [new]
ОлесяТкаченко
Member

Откуда:
Сообщений: 27
Glory,

Я в скобочках написала о проблемах)
Пыталась установить- не получается. Где-то видела, что для того, чтобы установить его необходимо сначала удалить Office, а после установки драйвера, снова его переустановить. Хотелось бы обойтись без переустановки офиса. Может быть есть еще какие-то варианты?
11 апр 12, 10:12    [12397336]     Ответить | Цитировать Сообщить модератору
 Re: импорт данных из Excel в SQL с выборкой импортируемых строк  [new]
Glory
Member

Откуда:
Сообщений: 104751
ОлесяТкаченко
Я в скобочках написала о проблемах)

"MS.JET.OLEDB 4.0 не существует 64битного" - обратитесь к производителю провайдера. Или к тому, кто вам создаст такого провайдера

ОлесяТкаченко
Пыталась установить- не получается.

Т.е. установка выдала сообщение - "Не получается" ?

ОлесяТкаченко
Где-то видела, что для того, чтобы установить его необходимо сначала удалить Office, а после установки драйвера, снова его переустановить. Хотелось бы обойтись без переустановки офиса. Может быть есть еще какие-то варианты?

Читать лог установки не пробовали ?
11 апр 12, 10:16    [12397360]     Ответить | Цитировать Сообщить модератору
 Re: импорт данных из Excel в SQL с выборкой импортируемых строк  [new]
ОлесяТкаченко
Member

Откуда:
Сообщений: 27
Glory,

Я так поняла, что проблема в том, что у меня сервер 64-битный, а офис 32-битный, поэтому не удается импортировать....Может есть какой-нибудь выход?..
11 апр 12, 20:55    [12402083]     Ответить | Цитировать Сообщить модератору
 Re: импорт данных из Excel в SQL с выборкой импортируемых строк  [new]
nezhadnye_my
Guest
ОлесяТкаченко
Glory,

Я так поняла, что проблема в том, что у меня сервер 64-битный, а офис 32-битный, поэтому не удается импортировать....Может есть какой-нибудь выход?..


целых 2: поставить сервер x32, или провайдер x64.
вот в соседней теме ссылку давали по установке AccessDatabaseEngine_X64.exe:
Ivan Durak
нашел тынц!!!
http://blogs.msdn.com/b/farukcelik/archive/2010/06/04/accessing-excel-files-on-a-x64-machine.aspx
12 апр 12, 11:28    [12404410]     Ответить | Цитировать Сообщить модератору
 Re: импорт данных из Excel в SQL с выборкой импортируемых строк  [new]
ОлесяТкаченко
Member

Откуда:
Сообщений: 27
nezhadnye_my,

Поставила 64 битный офис, загрузила провайдер!

Теперь другаяым проблема: не знаю как обратиться к конкретным строкам таблицы excel.

insert into dbo.[TipOrganizacii]([TipOrganizaciiID],[NazvanieTipa])
select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\my.xlsx;HDR=YES;IMEX=1', 'SELECT * FROM [Лист1$]')

Необходимо поставить условие, чтобы строки с одинаковым id заменялись на данные из таблицы excel, а те, которых нет в SQL таблице- добавлялись в нее. Хочу использовать merge. Помогите пожалуйста с составлением запроса...
12 апр 12, 22:57    [12408836]     Ответить | Цитировать Сообщить модератору
 Re: импорт данных из Excel в SQL с выборкой импортируемых строк  [new]
invm
Member

Откуда: Москва
Сообщений: 9844
ОлесяТкаченко
Необходимо поставить условие, чтобы строки с одинаковым id заменялись на данные из таблицы excel, а те, которых нет в SQL таблице- добавлялись в нее. Хочу использовать merge. Помогите пожалуйста с составлением запроса...

Примерно так:
merge into dbo.[TipOrganizacii] t
using
 OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\my.xlsx;HDR=YES;IMEX=1', 'SELECT * FROM [Лист1$]') s on s.id = t.id
when not matched then
 insert ([TipOrganizaciiID],[NazvanieTipa]) values (...)
when matched then
 update set ...
13 апр 12, 00:00    [12409116]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить