Как импортировать данные из excel в sql
Перейти к содержимому

Как импортировать данные из excel в sql

  • автор:

Импорт данных из Excel, Access, SharePoint, SQL Server и других внешних источников

Visio, план 2 Visio профессиональный 2021 Visio стандартный 2021 Visio профессиональный 2019 Visio стандартный 2019 Visio профессиональный 2016 Visio стандартный 2016 Visio профессиональный 2013 Visio 2013 Visio премиум 2010 Visio 2010 Visio стандартный 2010 Visio 2007 Еще. Меньше

Вы можете быстро импортировать и отображать данные непосредственно на фигурах в Visio. Прежде всего необходимо подключиться к источнику данных и импортировать в него данные. Второй этап — связывать импортируемые данные с фигурами.

Шаг 1. Импорт данных

На первом этапе вы импортируете данные с помощью мастера выбора данных.

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

  1. На вкладке Данные в группе Внешние данные нажмите кнопку Связать данные с фигурами.
  2. На первой странице мастера выбора данных выберите один из следующих типов источников данных:
    • книга Microsoft Excel;
    • База данных Microsoft Access
    • Список Microsoft SharePoint Foundation
    • База данных Microsoft SQL Server
    • другой источник данных OLEDB или ODBC;
    • ранее созданное подключение.
  3. Выполните остаток от работы мастера.

Примечание: Если на первой странице мастера выбран вариант, который не является книгой Excel, базой данных Access или списком SharePoint, мастер подключения данных может быть временно перенаправлен в мастер выбора данных.

После нажатия кнопки Готово на последней странице мастера подключения к данным появится окно Внешние данные с импортируемыми данными в сетке.

Шаг 2. Связывать строки данных с фигурами в рисунке

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

Способ 1. Связывать строки с существующими фигурами по одной

Этот способ лучше всего подходит для существующих рисунков с относительно небольшим количеством фигур.

    Перетащите строку из окна внешних данных на фигуру в рисунке.

Примечание: Если окно внешних данных не видно, перейдите на вкладку Данные и в группе Показать или скрыть, а затем в группе Показать или скрыть, выберите окно внешних данных.

В фигуре по появится значок ссылки слева от строки в окне внешних данных.

  • Вы можете связать одну строку с несколькими фигурами, но нельзя связать несколько строк с одной фигурой.
  • Сведения о том, как изменить или улучшить внешний вид фигур и данных, см. в этой теме.
  • Чтобы отобразить окно Внешние данные, в меню Вид выберите пункт Окно внешних данных.

Способ 2. Автоматическое связывать строки с существующими фигурами

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

  1. В Visio 2016 и более новых версиях: в меню Данные щелкните Обновить все и выберите Автоссылка после обновления, если еще не выбрана. В Visio 2013 и более старых версиях: в меню Данные выберите пункт Автоматически связывать.
  2. Следуйте шагам мастера автоматической связывать. Ваши данные будут отображаться в фигурах. Сведения о том, как изменить или улучшить внешний вид фигур и данных, см. в этой теме.

Способ 3. Создание фигур из данных

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

  1. Щелкните фигуру в области Фигуры.
  2. Перетащите строку или набор строк из окна Внешние данные на пустое место в рисунке. Для каждой строки, перетаскив в чертеж, будет отобразиться один экземпляр фигуры.

Мастер импорта неструктурированных файлов в SQL

Мастер импорта неструктурированных файлов позволяет легко скопировать данные из неструктурированного файла (CSV-файл, TXT-файл) в новую таблицу в вашей базе данных. Мастер импорта неструктурированных файлов поддерживает файлы форматирования с разделителями-запятыми и с фиксированной шириной. В этом обзоре описано, почему нужно использовать этот мастер, как его найти, а также приведен простой пример.

Почему нужно использовать этот мастер?

Этот мастер создан на основе интеллектуальной платформы Program Synthesis using Examples (PROSE) и позволяет улучшить текущий процесс импорта. Для пользователей, которые не обладают глубокими знаниями в предметной области, импорт данных часто представляет собой трудную и утомительную задачу, чреватую ошибками. При использовании мастера достаточно указать входной файл и уникальное имя таблицы, и платформа PROSE сделает все остальное.

PROSE анализирует шаблоны данных во входном файле и определяет имена столбцов, типы, разделители и т. д. Платформа запоминает структуру файла и выполняет все действия по обработке данных.

Предварительные требования

Эта функция доступна в SQL Server Management Studio (SSMS) 17.3 и более поздних версий. Убедитесь, что вы используете последнюю версию. Ее можно найти здесь.

Приступая к работе

Чтобы открыть мастер импорта неструктурированных файлов, выполните следующие действия.

  1. Откройте SQL Server Management Studio.
  2. Подключитесь к экземпляру ядра СУБД SQL Server или к узлу localhost.
  3. Разверните узел Базы данных, щелкните правой кнопкой мыши базу данных («test» в примере ниже), выберите Задачи, а затем — Импорт неструктурированного файла над пунктом меню «Импорт данных».

Wizard menu

Дополнительные сведения о различных функциях мастера см. в следующем руководстве:

Руководство

При выполнении действий, описанных в этом учебнике, вы можете использовать свой собственный неструктурированный файл. Если у вас нет собственного файла, можете скопировать следующий CSV-файл из Excel. Назовите этот файл example.csv и сохраните его в формате CSV в удобном месте, например на рабочем столе.

Wizard Excel

  1. Мастер доступа
  2. Указание входного файла
  3. Предварительный просмотр данных
  4. Изменение столбцов
  5. Сводка
  6. Результаты

Шаг 1. Открытие мастера и страница «Приступая к работе»

Откройте мастер, как описано здесь.

Первая страница мастера — это страница приветствия. Если вы не хотите, чтобы она открывалась снова, установите флажок Больше не показывать это окно.

Wizard Intro

Шаг 2. Указание входного файла

Нажмите кнопку «Обзор», чтобы выбрать входной файл. По умолчанию мастер ищет файлы в форматах CSV и TXT. PROSE определит, является ли это файлом с разделителями-запятыми или с фиксированной шириной, независимо от расширения файла.

Имя новой таблицы должно быть уникальным. В противном случае вы не сможете продолжить работу мастера.

Wizard Specify

Шаг 3. Предварительный просмотр данных

Мастер открывает окно предварительного просмотра для первых 50 строк данных. Если в данных есть ошибки, нажмите кнопку «Отмена». В противном случае перейдите к следующей странице.

Wizard Preview

Шаг 4. Изменение столбцов

Мастер определяет, что он считает правильными именами столбцов, типами данных и т. д. Здесь можно изменить поля, если они неверны (например, тип данных должен быть плавающей, а не int).

Столбцы, в которых обнаруживаются пустые значения, будут иметь флажок «Разрешить значения NULL». Однако если в столбце предполагается наличие значений NULL, а флажок «Разрешить значения NULL» не установлен, здесь можно обновить определение таблицы, чтобы разрешить значения NULL в одном или во всех столбцах.

Когда все будет готово, нажмите кнопку «Далее».

Wizard Modify

Шаг 5. Сводка

Это страница сводки, на которой отображается текущая конфигурация. Если возникли проблемы, можно вернуться к предыдущим страницам мастера. В противном случае нажмите кнопку «Готово», чтобы начать импорт.

Wizard Summary

Шаг 6. Результаты

На этой странице показан результат импорта. Если на ней есть зеленая галочка, импорт завершен успешно. В противном случае проверьте конфигурацию и входной файл на наличие ошибок.

Wizard Results

Устранение неполадок

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

Error inserting data into table. (Microsoft.SqlServer.Prose.Import) The given value of type String from the data source cannot be converted to type nvarchar of the specified target column. (System.Data) String or binary data would be truncated. (System.Data) 

Тактики устранения этой ошибки:

  • Расширение размера(ов) типа данных на шаге Изменение столбцов, например длины столбца nvarchar, может компенсировать отклонения данных от остальной части неструктурированного файла.
  • Включение отчета об ошибках на шаге Изменение столбцов, особенно по меньшему числу, покажет, какие строки в неструктурированном файле содержат данные, не соответствующие выбранным типам данных. Например, в неструктурированном файле, где во второй строке появляется ошибка, при выполнении импорта с отчетом об ошибках с диапазоном 1 появляется конкретное сообщение об ошибке. Проверка файла непосредственно в расположении может обеспечить более точные изменения типов данных на основе данных в определенных строках.

Error Reporting Results

Error inserting data into table occured while inserting rows 1 - 2. (Microsoft.SqlServer.Prose.Import) The given value of type String from the data source cannot be converted to type float of the specified target column. (System.Data) Failed to convert parameter value from a String to a Double. (System.Data) 

В настоящее время импортер использует кодировку на основе активной кодовой страницы системы. На большинстве компьютеров по умолчанию используется ANSI.

Подробнее

Дополнительные сведения о мастере.

  • Дополнительные сведения об импорте из других источников. Если вы хотите импортировать несколько неструктурированных файлов, обратитесь к разделу Мастер импорта и экспорта SQL Server.
  • Дополнительные сведения о подключении к неструктурированным файлам в качестве источников. Если вам необходимы дополнительные сведения о подключении к неструктурированным файлам в качестве источников, обратитесь к разделу Подключение к источнику данных неструктурированного файла.
  • Дополнительные сведения о PROSE. Если вам необходимы сведения об интеллектуальной платформе, которая используется этим мастером, обратитесь к разделу Пакет SDK для PROSE.

SQL-Ex blog

Импорт данных из файла Excel в базу данных SQL Server с помощью Python

Добавил Sergey Moiseenko on Суббота, 8 апреля. 2023

Есть много способов загрузить данные из Excel в SQL Server, но иногда полезно использовать те инструменты, которые вы знаете лучше всего. В этой статье мы рассмотрим как загружать данные из Excel в SQL Server с помощью Python.

Используемые инструменты

  • Экземпляр SQL Server
  • Python, версия 3.11.0.
  • Visual Studio Code, версия 1.72.1.
  • Windows 10 PC или Windows Server 2019/2022.

Установка базы данных — создание тестовой базы данных и таблицы

Имеется несколько способов создать базу данных и таблицы в SQL Server, но ниже мы пройдем через использование SQLCMD для создания базы данных, если вы не имеете SQL Server Management Studio или Azure Data Studio.

Откройте командую строку Windows или запустите новую терминальную сессию из Visual Studio Code, нажав CTRL + SHFT + `.

Для запуска SQLCMD используйте следующую команду sqlcmd -S -E , чтобы подключиться к SQL Server. Параметр -S указывает экземпляр SQL Server, а параметр -E означает использование доверительного подключения.

sqlcmd -S -E

После аутентификации создадим новую базу данных следующей командой:

CREATE DATABASE ExcelData; 
GO

Используйте эту команду SQLCMD для подтверждения создания базы данных:

SELECT name FROM sys.databases 
GO

Изображение ниже представляет вывод команды, который показывает все имеющиеся базы данных этого экземпляра SQL Server.

Для переключения на новую базу данных используйте следующую команду:

USE ExcelData; 
GO

Будет получено подтверждение изменение контекста, как показано ниже:

Теперь мы можем создать таблицу в этой базе данных.

CREATE TABLE EPL_LOG(ID int NOT NULL PRIMARY KEY); 
GO

Отлично! Вы создали таблицу с именем EPL_LOG и первичным ключом ID. Нам нужен только первый столбец, а программа загрузки создаст остальные столбцы на основе файла-источника.

Конфигурация ядра

Ядро помечает начальную точку вашего приложения SQLAlchemy. Ядро описывает пул соединений и диалект для BDAPI (Python Database API Specification), спецификацию в рамках Python для определения общих шаблонов использования для всех пакетов подключения к базам данных, которые в свою очередь взаимодействуют с указанной базой данных.

Для открытия нового терминала нажмите CTRL + SHFT + ` в Visual Studio Code.

Используйте следующую команду npm в окне терминала для установки модуля SQLAlchemy.

npm install sqlalchemy

Создайте файл Python с именем DbConn.py, вставьте в него нижеприведенный код и измените источник данных на требуемый. Это — ядро SQLAlchemy, которое взаимодействует с SQL Server через Python.

import sqlalchemy as sa
from sqlalchemy import create_engine
import urllib
import pyodbc

conn = urllib.parse.quote_plus(
‘Data Source Name=MssqlDataSource;’
‘Driver=;’
‘Server=POWERSERVER\POWERSERVER;’
‘Database=ExcelData;’
‘Trusted_connection=yes;’
)

try:
coxn = create_engine(‘mssql+pyodbc:///?odbc_connect=<>‘.format(conn))
print(«Passed»)

Запись в SQL Server

Мы будем использовать Pandas, который является быстрым, гибким и легким в использовании инструментом с открытыми кодами для манипуляции и анализа данных, встроенным в язык программирования Python. Python может читать данные Excel в программе Python, используя функцию pandas.read_excel().

Для простоты этой демонстрации, сохраним файл Excel в папке проекта Visual Studio Code, чтобы нам не пришлось указывать путь. Это позволит вам игнорировать параметр io (любая валидная строка пути) функции read_excel().

Мы будем также использовать openpyxl в качестве движка для чтения файлов Excel. Выполните следующую команду pip в окне терминала, чтобы установить openpyxl.

pip install pandas openpyxl

Создайте еще один файл с именем ExcelToSQL.py, содержащий код ниже. Этот код будет читать файл Excel и записывать в созданную ранее таблицу базы данных.

//ExcelToSQL.py
from pandas.core.frame import DataFrame
import pandas as pd
from DbConn import coxn

df = pd.read_excel(‘sportsref_download.xlsx’, engine = ‘openpyxl’)

except:
pass
print(«Failed!»)

else:
print(«saved in the table»)
print(df)

Теперь щелкнем кнопку Play в верхнем правом углу окна Visual Studio Code для выполнения скрипта. В терминале появится вывод данных.

Для проверки сохранения данных в базе откройте SSMS и выберите данные из таблицы. Вы можете также использовать SQLCMD для подключения к экземпляру и выполнения следующего кода.

USE ExcelData; 
GO
SELECT * FROM EPL_LOG

Изображение ниже показывает какие данные сейчас находятся в базе данных.

Заключение

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

Перемещайте данные Excel в SQL Server данным способом. Поскольку pandas сохраняет данные в DataFrame, ими легко манипулировать и изменять перед занесением в базу данных SQL Server.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Автор не разрешил комментировать эту запись

SQL-Ex blog

Руководство: как автоматизировать импорт данных из Excel в базу данных, используя VBA

Добавил Sergey Moiseenko on Суббота, 30 сентября. 2023

  1. MS Access посредством ODBC, если данных не очень много (просто скопировать/вставить).
  2. Использовать мастер импорта и экспорта данных, если данных много

Тут предполагается, что ваши данные не представляют собой перекрестную (пивот) таблицу.

Установка

Начнем с создания макроса в Excel. На вкладке “Developer” ленты (ее может не быть по умолчанию; вы можете добавить ее из меню Options) щелкните кнопку “View Code” (для Windows можно использовать комбинацию клавиш Alt+F11).

В верхнем меню: Insert >> Module

На новой панели (где печатается код) создайте функцию public:

Public Function ImportData() 
End

Если вы напечатаете “public function ImportData” нажмете Enter, остальное будет добавлено автоматически; т.е. будут добавлены круглые скобки и ключевое слово End.

Не забудьте сохранить ваш файл с расширением .xlsm, т.к. это книга с включенными макрокомандами (а не «обычная» книга).

Обзор концепции

Мы будем выполнять оператор INSERT в следующем формате:

INSERT INTO myTableName 
(field1, field2)
VALUES
(row1Value1, row1Value2),
(row2Value1, row2Value2)
  • Заголовок SQL (INSERT INTO myTableName)
  • Динамически сгенерированные «values», представляющие собой конкатенацию отдельных строк данных из электронной таблицы.

Давайте напишем код!

Сначала нужно создать строку подключения. Я оставляю точное значение вам. Вы, конечно, должны убедиться, что пользователь имеет необходимые разрешения безопасности базы данных. В примере ниже используется Active Directory — поэтому он обнаруживает мой вход в Windows и не использует локальную учетную запись пользователя SQL.

Я подключаюсь через ODBC. Если на вашей машине не установлен драйвер, загрузите его.

В моем случае строка подключения выглядит так:

Const strDbConn As String = "server=myServerName;Database=myDatabaseName;Trusted_Connection=Yes;Driver="

Для этого я создал глобальную переменную, размещенную выше объявления функции, которое мы только что создали.

Глобальную переменную мы можем использовать и в других функциях.

У меня есть простая функция для выполнения SQL:

Public Function RunSQL(strDbConn As String, strSQL As String) 
Dim cnn As Object
Dim rst As Object
Set cnn = CreateObject("ADODB.Connection")
cnn.Open strDbConn
Set rst = CreateObject("ADODB.Recordset")
rst.Open strSQL, cnn, 3, 1 '3 = Keyset, 1 = Pessimistic
Set rst = Nothing
End Function

Ошибка ADODB?

Этот код работает у меня без необходимости добавлять внешне ссылки. Но если вы получаете ошибку.

Раньше — возможно, это была предыдущая версия Excel — мне требовалось добавить ссылку, чтобы использовать код ADODB.

Вы можете сделать это в меню Tools >> References:

Согласно этой статье, вам нужно снять флажок опции Microsoft ActiveX Data Objects [x.x] Library.

Вставка данных с помощью SQL: заголовок

Нам нужно создать начальную часть оператора SQL, которая будет статичной (т.е. не будет изменяться).

Создадим функцию , которая возвращает жестко закодированный результат первой части оператора INSERT для заданной таблицы и имен полей:

Public Function GetInsertHeader() As String 
Dim strHeader As String
strHeader = ""
strHeader = strHeader & " INSERT INTO myTableName ("
strHeader = strHeader & " [field_one]"
strHeader = strHeader & " ,[field_two]"
strHeader = strHeader & " ,[field_three]"
strHeader = strHeader & " )"
GetInsertHeader = strHeader
End Function

Конечно, вам нужно изменить имена таблицы и полей

Вставка данных с помощью SQL: сами данные

Нам нужен способ для динамической генерации values, которые будут вставляться в базу данных. Прежде чем создать SQL, нам нужен способ прохода по всем строкам в Excel сверху донизу. На первом шаге нужно определить, сколько строк у нас есть.

Я использую функцию ниже для получения числа строк в электронной таблице.

Я определяю тип LONG, поскольку Integer (целое) недостаточно велик для моего набора данных. Целое ограничено 32000 строками.

Public Function HowManyRows(sheetName As String) As Long 
'Find out how many row there are
' Assumes the first column does NOT have a blank in it
Sheets(sheetName).Select
Range("A1").Select
Selection.End(xlDown).Select
Dim totalRows As Long
totalRows = ActiveCell.Row ' do NOT subtract one for the header
HowManyRows = totalRows
End Function

Проходя в цикле каждый ряд мы будем создавать строку, которая берет значения отдельных столбцов и добавляет их в оператор SQL. Код приведен ниже:

Public Function getSQLForSingleRow(sheet As String, rowNumber As Long) As String 
' Не забудьте поменять форматирование, например, даты или числа
fieldWithText = ReplaceSingleQuote(Worksheets(sheet).Range("A" & rowNumber).FormulaR1C1)
fieldWithDate = Format(Worksheets(sheet).Range("B" & rowNumber).FormulaR1C1, "mm/dd/yyyy")
fieldWithNumbers = CDbl(Nz(Worksheets(sheet).Range("C" & rowNumber).FormulaR1C1))
Dim strSQL As String
strSQL = " ("
strSQL = strSQL & " '" & fieldWithText & "',"
strSQL = strSQL & " '" & fieldWithDate & "',"
strSQL = strSQL & " " & fieldWithNumbers & "" ' Кавычки не нужны, т.к. это число
strSQL = strSQL & " ) "
getSQLForSingleRow = strSQL
End Function

Я имею две вспомогательные функции; одну для текста, а другую для чисел. Если значение представляет собой текст, нам нужно заменить («экранировать») одиночную кавычку, для этого у меня есть такая функция:

Public Function ReplaceSingleQuote(str As String) As String 
If Len(Trim(str)) > 0 Then
ReplaceSingleQuote = Replace(str, "'", "''")
Else
ReplaceSingleQuote = str
End If
End Function

Я также создал функцию nz() (как «null-нуль», которая встроена в некоторые языки программирования), которая будет заменять числовые значения на «0», при необходимости:

Function Nz(value As String) As Double 
If IsNull(value) Or (value = "") Then
Nz = 0
Else
Nz = value
End If
End Function

Вот код, который проходит в цикле каждую строку электронной таблицы и генерирует оператор SQL:

Public Function ImportData(sheet As String) 
Dim i As Integer
Dim strSQL As String
Dim totalRows As Long
totalRows = HowManyRows(sheet)
strInsertHeader = GetInsertHeader()
Dim strIndividualRows As String
strIndividualRows = ""
For i = 2 To totalRows
strIndividualRows = strIndividualRows & getSQLForSingleRow(sheet, i)
' добавить запятую в конце,
' которую удалим потом, если потребуется
strIndividualRows = strIndividualRows & ","
Next
strSQL = strInsertHeader & " VALUES " & strIndividualRows
strSQL = RemoveLastCharacterIfComma(strSQL)
Call RunSQL(strDbConn, strSQL)
Range("A1").Select
MsgBox "Complete"
End Function
  • Вызываем функцию, которая передает имя электронной таблицы (лист) с данными, чтобы определить количество строк в наборе.
  • Создаем переменную, которая содержит начало оператора SQL.
  • Обходим в цикле каждую строку набора данных, создавая оператор INSERT. VALUES.
  • В конце каждой строки данных добавляем запятую.
  • Удаляем последнюю запятую в операторе.
  • Выполняем SQL.
Public Function RemoveLastCharacterIfComma(str As String) As String 
str = Trim(str)
If Right(str, 1) = "," Then
RemoveLastCharacterIfComma = Left(str, Len(str) - 1)
Else
RemoveLastCharacterIfComma = str
End If
End Function

Как обойти ограничение на импорт данных

Я столкнулся с тем, что при слишком длинных конкатенированных «значениях» Excel терпит крах. Выяснилось, что я должен ограничить скрипт импортирования до 500 строк одновременно.

Вот обновленный код:

Public Function ImportData(sheet As String) 
Dim i As Long
Dim strSQL As String
Dim totalRows As Long
totalRows = HowManyRows(sheet)
strInsertHeader = GetInsertHeader()
Dim strIndividualRows As String
strIndividualRows = ""
For i = 2 To totalRows
strIndividualRows = strIndividualRows & getSQLForSingleRow(sheet, i)
' add comma at the end no matter what; remove last one after
strIndividualRows = strIndividualRows & ","
'Worksheets("Instructions").Range("I2").FormulaR1C1 = "Rows read in: " & i
' вставлять в базу данных, пока не станет слишком большой
If (i Mod 500) = 0 Then
strSQL = strInsertHeader & " VALUES " & strIndividualRows
strSQL = RemoveLastCharacterIfComma(strSQL)
Call RunSQL(strDbConn, strSQL)
strIndividualRows = ""
'Debug.Print "in the middle of importing " & i
End If
Next
' вставить в последний пакет
strSQL = strInsertHeader & " VALUES " & strIndividualRows
strSQL = RemoveLastCharacterIfComma(strSQL)
Call RunSQL(strDbConn, strSQL)
strIndividualRows = ""
'Debug.Print "last row " & i
Range("A1").Select
' Complete: clear out the status
' Worksheets("Instructions").Range("I1").Formula2R1C1 = ""
' Worksheets("Instructions").Range("I2").Formula2R1C1 = ""
'MsgBox sheet + " data imported"
End Function

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

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

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

Собираем все вместе

Чтобы сделать это более полезным, нам может понадобиться удалять существующие данные.

Хотя вы можете получить «дату последнего обновления» из набора данных, этот пример кода демонстрирует дополнительный оператор SQL для выполнения запроса UPDATE с целью указания даты импорта.

  • Удаляет существующие данные.
  • Вызывает функцию, которая импортирует данные.
  • Выполняет запрос UPDATE для указания даты обновления данных.
Public Sub autoImport() 
' Сначала удаляем существующие данные
Dim strSQL As String
strSQL = "DELETE FROM myTableName" ' Альтернативно можно использовать TRUNCATE
Call RunSQL(strDbConn, strSQL)
' Импорт новых данных
Call ImportData("tabWithData") ' Убедитесь, что передали имя листа, или получите его динамически
' Указываем, когда данные обновлялись; я использую таблицу "utility"
Dim theDate As String
theDate = InputBox("Enter date that the data for", "Data as of", Format(Now, "m/d/yyyy"))
strSQL = "UPDATE Utility SET value = '" & ReplaceSingleQuote(theDate) & "' WHERE description IN ('Last Updated,'Last Updated')"
Call RunSQL(strDbConn, strSQL)
Range("A1").Select
MsgBox "Data has been imported"
End Sub

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *