Самый быстрый способ загрузки данных из SQL Server в Excel - PullRequest
0 голосов
/ 03 июня 2018

У меня есть таблица на SQL Server, которая является относительно большой (около 300 000 строк).Эти данные используются в качестве пула данных для проверки того, что пользователи делают в электронной таблице Excel.

Одним из способов обеспечения того, чтобы пользователи всегда использовали самые последние данные, является настройка VBA для автоматического извлечения данных с сервера SQL при открытии электронной таблицы.

Код:

Private Sub Workbook_Open()
        Set objMyConn = New ADODB.Connection
        Set objMyRecordset = New ADODB.Recordset
        Dim strSQL As String

    'Open Connection'
        objMyConn.ConnectionString = "Provider=SQLOLEDB; Data Source=Server Name;Initial Catalog=Database;User ID=User;Password=Password; Trusted_Connection=no"
        objMyConn.Open

    'Set and Excecute SQL Command'
        strSQL = "SELECT * FROM [Database]"

    'Open Recordset'
        Set objMyRecordset.ActiveConnection = objMyConn
        objMyRecordset.Open strSQL

    'Copy Data to Excel'
        Sheets("TEPSD").Range("A1").CopyFromRecordset (objMyRecordset)

        objMyConn.Close

End Sub

Проблема в том, что это занимает очень много времени.Иногда это занимает слишком много времени, и мне приходится нажимать Ctrl + ломать его.

Мне было интересно, есть ли более быстрый способ сделать это?Или другой способ проверки пользовательских данных без необходимости перетаскивать всю таблицу в Excel?

Любой ввод будет очень признателен.

Ответы [ 2 ]

0 голосов
/ 23 июня 2018

Вы должны рассмотреть что-то вроде этого.

Подключение Excel к SQL Server

Надстройка Devart Excel для SQL Server позволяет подключать Excel к базам данных SQL Server, получать и загружать живой SQLДанные сервера в Excel, а затем измените эти данные и сохраните изменения обратно на SQL Server.Вот как вы можете подключить Excel к SQL-серверу и загрузить данные SQL-сервера в Excel всего за несколько простых шагов.

Чтобы начать связывать Excel с SQL-сервером, на ленте перейдите на вкладку DEVART и нажмите «Получить данные».кнопка.Откроется мастер импорта данных, в котором вам нужно будет создать соединение с Excel SQL Server и настроить запрос для получения данных из SQL Server в Excel: вкладка ленты Devart

  1. Укажите параметры соединения

В диалоговом окне «Редактор подключений» необходимо ввести необходимые параметры подключения:

Login details - select whether to use Windows authentication or SQL Server authentication. In the latter case you need to enter your SQL Server user name and password.
User name - your SQL Server user name. Required only for SQL Server authentication.
Password - your SQL Server password. Required only for SQL Server authentication.
Database - the name of SQL database to connect to Excel.

Если вам необходимо более подробно настроить подключение к Excel SQL Server, вы можете дополнительно нажать кнопку «Дополнительно» инастроить расширенные параметры подключения.Там вы можете настроить шифрование соединения, параметры отказоустойчивости и т. Д.

Чтобы проверить, правильно ли вы подключили Excel к SQL-серверу, нажмите кнопку «Проверить соединение».

Настройки соединения Excel SQL 2.Выберите, сохранять ли подключение в книге Excel

При желании вы можете изменить настройки хранения данных о соединении и запросах в книге Excel и в настройках Excel:

Allow saving add-in specific data in Excel worksheet - clear this check box in case you don't want to save any Excel add-in specific data in the Excel worksheet - connections, queries, etc. In this case, if you want to reload data from SQL Server to Excel or save modified data back to SQL Server, you will need to reenter both the connection settings and query.
Allow saving connection string in Excel worksheet - clear this check box if you want your SQL Server connection parameters not to be stored in the Excel. In this case you will need to reenter your connection settings each time you want to reload SQL Server data or modify and save them to SQL Server. However, you may share the Excel workbook, and nobody will be able to get any connection details from it.
Allow saving password - it is recommended to clear this check box. If you don't clear this check box, all the connection settings, including your SQL Server password, will be stored in the Excel workbook. And anyone having our Excel Add-in for SQL Server and the workbook will be able to link Excel to the SQL Server, get data from it, and modify them. But in this case you won't need to reenter anything when reloading data from SQL Server to Excel or saving them to SQL Server.
Allow reuse connection in Excel - select this check box if you want to save this connection on your computer and reuse it in other Excel workbooks. It does not affect saving connection parameters in the workbook itself. You need to specify the connection name, and after this you will be able to simply select this connection from the list
Настройка запроса для получения данных

Вы можете использовать Visual Query Builder для его визуальной настройки или перейти на вкладку SQL-запрос и ввести SQL-запрос.Чтобы настроить запрос визуально, выполните следующие действия:

In the Object list select the SQL Server table to load its data to Excel.

In the tree below clear check boxes for the columns you don't want to import data from.

Optionally expand the relation node and select check boxes for the columns from the tables referenced by the current table's foreign keys to add them to the query.

In the box on the right you may optionally configure the filter conditions and ordering of the imported data and specify the max number of rows to load from SQL Server to Excel. For more information on configuring the query you may refer to our documentation, installed with the Excel Add-ins.

После указания запроса вы можете при желании нажать кнопку «Далее» и просмотреть некоторые из первых возвращенных строк.Или нажмите Готово и начните загрузку данных.Запрос на получение данных SQL Server в Excel

Редактирование данных Live SQL Server

После загрузки данных из SQL Server в Excel вы можете работать с этими данными, как с обычной рабочей таблицей Excel.Вы можете мгновенно обновить данные с SQL Server, щелкнув Обновить на вкладке Devart на ленте, и, таким образом, всегда иметь свежие текущие данные с SQL Server в своей книге.

Если вы хотите редактировать данные SQL Server в Excelи сохранить их обратно на SQL Server, вам нужно сначала нажать кнопку «Режим редактирования» на вкладке «Devart» ленты.В противном случае внесенные вами изменения не могут быть сохранены в SQL Server.

После запуска режима редактирования вы можете редактировать данные, как обычно, в Excel - удалять строки, изменять значения их ячеек.Столбцы, которые нельзя редактировать в SQL Server, будут иметь курсивный шрифт, и вы не можете редактировать значения в этих столбцах.Чтобы добавить новую строку, введите необходимые значения в последнюю строку таблицы, выделенную зеленым цветом.Редактирование данных SQL Server в Excel

Чтобы применить изменения к фактическим данным в базе данных, нажмите кнопку «Применить».Или нажмите Откат, чтобы откатить все изменения.Обратите внимание, что изменения не сохраняются в базе данных до тех пор, пока вы не нажмете кнопку «Фиксация», даже если вы сохраните книгу.

Также учтите это.

https://www.mssqltips.com/sqlservertip/3436/passing-dynamic-query-values-from-excel-to-sql-server/

Я использую эти методы в своем офисе, и я перехожу к 900 тыс. Строк с примерно 24 столбцами, от SQL Server до Excel.Обновление занимает не более 60 секунд.

0 голосов
/ 04 июня 2018

После нашего обсуждения.

В настоящее время каждый пользователь пытается извлечь большие объемы данных с сервера за короткий промежуток времени, и тогда данные устареют, поскольку они не обновляются, если только они не обновляются.пользователь закрывает и снова открывает книгу.

Вместо этого переключитесь на макрос Worksheet_Change ().Это будет обновлять данные каждый раз, когда вносится изменение.

Это позволит вам отправлять индивидуальный запрос каждый раз, когда пользователь вносит изменение - например, нажимает ввод.

Измените strSQLиз статического запроса, извлекающего все данные в strSQL = "SELECT name FROM [Database] WHERE name = " & Target.Value

NB. Вы действительно должны посмотреть, как набор записей VBA хочет, чтобы вы выполняли конкатенацию параметров, чтобы избежать таблиц Бобби .

Если запрос успешен - то есть допустимая запись - тогда он должен вернуть то же имя.Если соответствующей записи нет, т. Е. Неверный выбор, вы должны получить пустой recordset.Это означает, что вы можете проверить результат запроса с помощью If rsObj.RecordCount < 1 Then, чтобы корректно завершить работу (или запросить пользователя и т. Д.) При отсутствии действительного совпадения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...