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

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

Теперь стоит задача следующая: Пользователь должен выгрузить данные в excel(решено), изменить что ему там понравилось и нажать на кнопочку сохранить(в этот момент должна обновиться таблица в базе SQL)(не решено).

Нашел аддон для Excel SaveToDB. Но как-то криво он работает, или у меня руки не там растут. В общем данный аддон выгружает почти 10к строк из 300к необходимых. Да и сортировка ниочем.

В SQL я хоть и не профи но разбираюсь, но писать макросы в VB не для меня. Если кому пришло в голову хоть какое нибудь направление поиска(кроме леса, гугла, яндекса и тп), прошу отписаться. Сам ломаю голову над этим уже давно.
2 июл 13, 16:32    [14511581]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
MalishPo
В SQL я хоть и не профи но разбираюсь, но писать макросы в VB не для меня.

Напишите программу на том языке программирования, который "для вас"
2 июл 13, 16:35    [14511630]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

Откуда:
Сообщений: 101
Я вообще не знаком с языками, есть предложение сделать на phpmyadmin, но все-таки. Неужели никто не сталкивался с такой задачей? Может уже есть какая софтина. Неохота из-за 300тыщ строк поднимать сервер(для phpmyadmin нужно будет mysql поднимать)
2 июл 13, 16:55    [14511813]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
MalishPo
Неужели никто не сталкивался с такой задачей?

С задачей написания клиентской программы сотни людей сталикиваются наверное каждую минуту

MalishPo
Может уже есть какая софтина.

Которая напишет вам нужную софтину ? Или которая уже содержит нужный вам функционал ?

MalishPo
Неохота из-за 300тыщ строк поднимать сервер(для phpmyadmin нужно будет mysql поднимать)

Вообще то mssql и mysql - это разные продукты
2 июл 13, 16:58    [14511835]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
MalishPo
В SQL я хоть и не профи но разбираюсь, но писать макросы в VB не для меня. Если кому пришло в голову хоть какое нибудь направление поиска(кроме леса, гугла, яндекса и тп), прошу отписаться. Сам ломаю голову над этим уже давно.

ну раз разбираетесь в sql, напишите хранимку, которая из экселевского файла забирает данные, примеры тут на форуме есть. а макрос vb будет дергать эту хранимку
2 июл 13, 17:28    [14512059]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
Shakill, это для случая если у sql сервера есть доступ к экселевскому файлу, конечно
2 июл 13, 17:30    [14512067]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
Если "Поставили задачу, слить в одну таблицу SQL кучу данных из двух десятков excel'ских документов. Выполнил.", то что мешает для "нажать на кнопочку сохранить(в этот момент должна обновиться таблица в базе SQL)" использовать уже сделаную вами функцию "слить в одну таблицу SQL" для данного файла Excel ?
2 июл 13, 17:34    [14512095]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

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

Проблема как раз в VB, я в корне не знаю как накалякать макрос который будет вызывать хранимку, собсно это первое о чем я подумал и попробовал. Ни одна попытка написания не привела ни к чему хорошему, перелопатил весь форум, ничего не подошло. Залез на сайт мелкомягких, нашел кучу полезной, но к сожалению не для меня, информации.
Glory,

Я в курсе что это разные продукты, потому и не хочу делать оболочку на phpmyadmin, т.к. придется еще и данные снова заливать.
По вопросу слития проблема в том, что я заливал с помощью Import\Export. Слишком много данных, в разных файлах и ко всему почти в каждом файле куча косяков с форматами ячеек.

В общем я не правильно описал проблему.

Есть база с кучей данных, при сливе в Excel выходит порядка трехсот тысяч строк и около сорока колонок(примерно миллион двести тысяч ячеек), с этим документом работает куча народу(для чтения) и десяток человек вносят изменения(ежедневно). Поэтому я решил написать небольшой скрипт, который будет выгружать в Excel только определенные строки(по заданным критериям), для тех кто вносит изменения. Остальным хватит и простой выгрузки всей базы в Excel(с этим нет проблем). Но я не могу найти ни одного нормального примера подобного макроса. Все что нашел(в том числе здесь, на форуме) выше моего знания как excel'я так и VB.
У меня возникает ощущение что в Excel нельзя просто написать что-нибудь вроде:
    Dim cn As ADODB.Connection
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
        "Initial Catalog=<database>;User ID=<user>;Password=<password>"
а дальше например sql запрос

То есть делаем коннект к базе и оперируем чисто sql'ными запросами(Select, Update etc.)
2 июл 13, 20:58    [14512990]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
invm
Member

Откуда: Москва
Сообщений: 9724
Excel-SQL Server Import-Export using VBA
2 июл 13, 21:24    [14513082]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

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

Спс, попробую. Я уже находил подобное, но в более сложном варианте, потому и не смог разобраться. Попробую тут почитать.
2 июл 13, 21:53    [14513168]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

Откуда:
Сообщений: 101
И последнее, слезно умоляю, направьте меня на ссылку к какой нибудь книге по VB, желательно в PDF. Подойдет даже VB для чайников :) Хотелось бы иметь под рукой книжку в которой смогу смотреть ифну по той или иной функции.
2 июл 13, 21:55    [14513173]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
invm
Member

Откуда: Москва
Сообщений: 9724
MalishPo
И последнее, слезно умоляю, направьте меня на ссылку к какой нибудь книге по VB, желательно в PDF
В гугле забанили?
http://www.google.ru/search?q=vba для чайников
2 июл 13, 22:15    [14513233]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
кладовщик
Member

Откуда:
Сообщений: 563
MalishPo

У меня возникает ощущение что в Excel нельзя просто написать что-нибудь вроде:
    Dim cn As ADODB.Connection
    Dim lngRecsAff As Long
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;Data Source=<server>;" & _
        "Initial Catalog=<database>;User ID=<user>;Password=<password>"
а дальше например sql запрос

То есть делаем коннект к базе и оперируем чисто sql'ными запросами(Select, Update etc.)

Если есть ХРП, решающая задачу, то для запуска из Экселя достаточно начать писать что-то вроде
Set MyCommand = New ADODB.Command
'dd1 = Now
With MyCommand
    .ActiveConnection = cn
    .CommandText = "dbo.p_MySP"
    .CommandType = adCmdStoredProc
2 июл 13, 22:56    [14513312]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
кладовщик
Member

Откуда:
Сообщений: 563
MalishPo
И последнее, слезно умоляю, направьте меня на ссылку к какой нибудь книге по VB, желательно в PDF. Подойдет даже VB для чайников :) Хотелось бы иметь под рукой книжку в которой смогу смотреть ифну по той или иной функции.

На профильный форум обратись https://www.sql.ru/forum/ms-office
Я кроме книг Уокенбаха типа профессиональное программирование в Эксель сейчас на раз ничего припомнить не смог.
2 июл 13, 22:58    [14513314]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
kain111
Member

Откуда:
Сообщений: 227
я решал немного схожую задачу, если не поленитесь то найдете созданный мною топик в котором будет эксель с макросом с как минимум подключением к бд. Самое главное есть ли у вас ключ, по которому можно выделить конкретную запись, т.е. уникальные ее идентификаторы.
для вас 2 пути в техническом смысле
1й это выложить файл рядом с сервером. чтобы он его видел и обратиться к нему через конструкцию типа
SELECT * FROM
OPENROWSET
	('Microsoft.ACE.OLEDB.12.0',
	 'Excel 12.0;Database=C:\temp\xltest.xlsx',
     'SELECT * FROM [Лист1$]')

После чего средствами SQL выполнить сравнение и обновление. Есть неплохая команда MERGE
2й написать макрос на VB котоырй будет пробегать по ячейкам и их обновлять в базе подключившись к оной.
3й написать прогру на любом известном вам языке более высокого уровня, в которой будет открывание экселя и обработка его записей сравнением подключения.
По мне 1й способ самый легкий и эффективный. поскольку как минимум будет пакетная обработка.записей

Можно придумать хитрость и выгружать 2 листа данных на одном пусть работает пользователь а второй сохраняется до поры до времени. а на 3м прописать формулу эксель сравнения каждой ячейки и в случае чего почетка этйо ячейки. и в случае когда надо обновить данные в базе мы обновляет только строчки где есть изменения.
3 июл 13, 13:42    [14516305]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

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

Ваш топик я видел и прочел. Мне не подходит данный вариант, сохранение должно быть с файла и сохранять буду не я, а пользователи. В общем завтра на работе протестирую вызов процедуры из макроса и отпишусь, еще раз всем спс за помощь.
3 июл 13, 22:29    [14519374]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

Откуда:
Сообщений: 101
Возникла очередная проблема.
Для сохранения данных из Excel в MS SQL я решил использовать созданную процедуру. С помощью openrowset делаю select * из файла и по задумке должен быть update таблицы. Но во-первых, выгрузка данных занимает от 5 до 10 минут(файл лежит на машине с сервером). Во-вторых слишком загружает систему. Подскажите в какую сторону еще копать?

ПС: Сервачек для теста ставил себе на локальную машину. После запуска скрипта, примерно на половине выгрузки сгорел блок питания ))
4 июл 13, 11:36    [14521054]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
MalishPo
Подскажите в какую сторону еще копать?

В сторону покупки нового оборудования
4 июл 13, 11:39    [14521077]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

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

Совет отличный, но на сервере скрипт обработается нормально. Меня волнует именно кол-во потраченного времени. Можно ли скульными методами провести сравнение таблиц без полного закачивания оной на сервак. Например я никак не пойму бонуса связанного сервера. Поможет ли он?

ПС: Обработка 40-ка метрового файла в течении 10+ минут.... я считаю это очень много.
4 июл 13, 11:45    [14521127]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
MalishPo
Совет отличный, но на сервере скрипт обработается нормально.

Вы не поверите, но все скрипты, отправленные серверу, выполняются на сервере. Даже если клиент в Африке, а сервер в Бразилии

MalishPo
ПС: Обработка 40-ка метрового файла в течении 10+ минут.... я считаю это очень много.

Это же вами написанная обработка. Что вам мешает оптимизировать ее ?
4 июл 13, 11:48    [14521157]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
AnyKey45
Member

Откуда: Ekaterinburg-Moscow-EU
Сообщений: 219
А access как клиент для сервера не пойдет? Дабы исключить все эти манипуляции с выгрузками/загрузками - что если работать напрямую?
4 июл 13, 12:13    [14521326]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

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

Ну во-первых я же сказал что MS SQL установлен на локальной машине. И что сгорел блок питания я не волнуюсь(поставщики в компы блоки ставят убогие).
А во-вторых подскажите, что можно оптимизировать здесь:
Select * from OpenrowSet(
	'Microsoft.ACE.OLEDB.12.0', 
	'Excel 12.0;Database=c:\test.xlsm', 
	'SELECT * FROM [Лист1$]'
4 июл 13, 12:51    [14521686]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

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

Я это предложение вынес сразу как поставили задачу. Отказались по причине отсутствия лицензии, сволочи (
4 июл 13, 12:53    [14521700]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
Glory
Member

Откуда:
Сообщений: 104751
MalishPo
Ну во-первых я же сказал что MS SQL установлен на локальной машине.

Что вы тогда вкладываете в слова "но на сервере скрипт обработается нормально" ?
Где тогда скрипт отрабатывает "ненормально"

MalishPo
А во-вторых подскажите, что можно оптимизировать здесь:

Т.е. вы как то нашли, что проблема именно в этом запросе ?
Именно он "слишком загружает систему" ?
4 июл 13, 12:57    [14521739]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL и Excel  [new]
MalishPo
Member

Откуда:
Сообщений: 101
Извините за мое консноязычие.
В общем скрипт обрабатывается, с этим проблем нету. Но обработка долгая и слишком загружает систему. Буду копать в сторону VB. Делать проверку измененных ячеек и отправлять только их, а не весь документ.
4 июл 13, 13:38    [14522062]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить