О преобразовании XLS в SQL запросы
Конвертер Excel в SQL была создана для быстрого преобразования Excel файлов в запросы SQL(Structured Query Language) для вставки в базу данных. Этот удивительный инструмент поддерживает настраиваемое имя таблицы и несколько команд MySQL для вставки. Нет необходимости загружать или устанавливать какое-либо программное обеспечение.
В результате вы получите несколько запросов:
- SQL-запрос для создания таблицы. Но это всего лишь пример «create table»; на самом деле не рекомендуется выполнять этот запрос, потому что он не содержит индексы, ключи, правильные типы и т.д.
- Insert или Replace запросы.
Как это работает?
Просто выберите нужные параметры и загрузите Excel(XLS или XLSX) файл и вы сразу получите SQL запросы.
После преобразования вы можете выполнить эти команды на вашем SQL сервере и добавить все данные в вашу базу данных.
I noticed your comment that using the import wizard was more complicated of a solution than you wanted, so you must be trying to load data.
You can try BULK INSERT
:
First, do a SAVE AS on each sheet and convert them to CSV files. You should have one CSV file for each sheet you want to import.
Next, make a table with the similar data types and length that you’ll be bringing in. A typical Excel cell is a VARCHAR(255), (probably more like NVARCHAR(255) if you want to be specific, but we’ll avoid unicode for this solution).
So, if your excel sheet had 5 columns:
CREATE TABLE Sheet1
(Column1 VARCHAR(255)
, Column2 VARCHAR(255)
, Column3 VARCHAR(255)
, Column4 VARCHAR(255)
, Column5 VARCHAR(255)
)
Then you can write a simple bulk insert to the table PROVIDED you have the file on network share or local the to server/machine where the SQL instance is. For example, if you had the file on your machine and wanted to try and push to a server out on the network, SQL would think the C:
in the script below was on the server and not your machine. You would have to share a folder and access it over the network: \MyMachineNameSharedFolderSheet1.csv
BULK INSERT dbo.Sheet1
FROM 'C:LocalFolderWhereTheFileIsSheet1.csv'
WITH (
FIELDTERMINATOR = ','
, ROWTERMINATOR = 'n'
)
This should get the data into that table provided the same number of columns exist in the file and table.
It’s not pretty, but it’s simple. The BULK INSERT
is a tried and true method of basic and quick loading.
Setup instructions
This small command line tool to help you convert data of excel files into insert statements in SQL syntax.
- Navigate to dotnet core website and follow instructions to install dotnet core
dotnet tool install -g ExcelToSQLScripts.Console
excel2sql --help
Note: Ensure that you have ~/.dotnet/tools
path added in your $PATH variable
Generating SQL scripts
You can generate 3 types of scripts i.e. insert scipts, update scripts & merge scripts.
Sample Input
Insert scripts
excel2sql insert -i <PATH_TO_XLSX_FILE> -o <OUTPUT_DIRECTORY_FOR_SQL_FILES>
Sample Output
INSERT INTO EMPLOYEES (ID, NAME, LOCATION) VALUES (1, 'John', 'India'); INSERT INTO EMPLOYEES (ID, NAME, LOCATION) VALUES (2, 'Jason', 'US');
Update scripts
excel2sql update -i <PATH_TO_XLSX_FILE> -o <OUTPUT_DIRECTORY_FOR_SQL_FILES>
Sample Output
UPDATE EMPLOYEES SET NAME = 'John', LOCATION = 'India' WHERE ID = 1; UPDATE EMPLOYEES SET NAME = 'Jason', LOCATION = 'US' WHERE ID = 2;
Merge scripts
excel2sql merge -i <PATH_TO_XLSX_FILE> -o <OUTPUT_DIRECTORY_FOR_SQL_FILES>
Sample Output
MERGE INTO EMPLOYEES T USING (SELECT 1 ID, 'John' NAME, 'India' LOCATION FROM DUAL) D ON (T.ID = D.ID) WHEN MATCHED THEN UPDATE SET T.NAME = D.NAME, T.LOCATION = D.LOCATION WHEN NOT MATCHED THEN INSERT (ID, NAME, LOCATION) VALUES (D.ID, D.NAME, D.LOCATION); MERGE INTO EMPLOYEES T USING (SELECT 2 ID, 'Jason' NAME, 'US' LOCATION FROM DUAL) D ON (T.ID = D.ID) WHEN MATCHED THEN UPDATE SET T.NAME = D.NAME, T.LOCATION = D.LOCATION WHEN NOT MATCHED THEN INSERT (ID, NAME, LOCATION) VALUES (D.ID, D.NAME, D.LOCATION);
Содержание
- Импорт данных из Excel в SQL Server или базу данных Azure
- Список методов
- Мастер импорта и экспорта
- Службы Integration Services (SSIS)
- OPENROWSET и связанные серверы
- Распределенные запросы
- Связанные серверы
- Предварительное требование — сохранение данных Excel как текст
- Мастер импорта неструктурированных файлов
- Команда BULK INSERT
- Средство BCP
- Мастер копирования (ADF)
- Фабрика данных Azure
- Распространенные ошибки
- «Microsoft.ACE.OLEDB.12.0» не зарегистрирован
- Не удалось создать экземпляр поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)».
- 32-разрядный поставщик OLE DB «Microsoft.ACE.OLEDB.12.0» не может быть загружен в процессе на 64-разрядной версии SQL Server.
- Поставщик OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)» сообщил об ошибке.
- Не удалось проинициализировать объект источника данных поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)».
- Конвертировать Excel в SQL
- Форма для преобразования Excel в SQL
- Результат преобразования Excel в SQL
- О преобразовании Excel в SQL
- О преобразовании XLS в SQL запросы
- Как это работает?
- Import data from Excel to SQL Server or Azure SQL Database
- List of methods
- Import and Export Wizard
- Integration Services (SSIS)
- OPENROWSET and linked servers
- Distributed queries
- Linked servers
- Prerequisite — Save Excel data as text
- The Import Flat File Wizard
- BULK INSERT command
- BCP tool
- Copy Wizard (ADF)
- Azure Data Factory
- Common errors
- Microsoft.ACE.OLEDB.12.0″ has not been registered
- Cannot create an instance of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)»
- The 32-bit OLE DB provider «Microsoft.ACE.OLEDB.12.0» cannot be loaded in-process on a 64-bit SQL Server
- The OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)» reported an error.
- Cannot initialize the data source object of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)»
Импорт данных из Excel в SQL Server или базу данных Azure
Применимо к: база данных SQL ServerAzure SQL
Импортировать данные из файлов Excel в SQL Server или базу данных SQL Azure можно несколькими способами. Некоторые методы позволяют импортировать данные за один шаг непосредственно из файлов Excel. Для других методов необходимо экспортировать данные Excel в виде текста (CSV-файла), прежде чем их можно будет импортировать.
В этой статье перечислены часто используемые методы и содержатся ссылки для получения дополнительных сведений. Однако в ней не указано полное описание таких сложных инструментов и служб, как SSIS или Фабрика данных Azure. Дополнительные сведения об интересующем вас решении доступны по ссылкам ниже.
Список методов
Существует несколько способов импортировать данные из Excel. Для использования некоторых из этих инструментов может понадобиться установка SQL Server Management Studio (SSMS).
Для импорта данных из Excel можно использовать следующие средства:
Сначала экспортировать в текст (SQL Server и база данных SQL) | Непосредственно из Excel (только в локальной среде SQL Server) |
---|---|
Мастер импорта неструктурированных файлов | мастер импорта и экспорта SQL Server |
Инструкция BULK INSERT | Службы SQL Server Integration Services |
BCP | Функция OPENROWSET |
Мастер копирования (Фабрика данных Azure) | |
Фабрика данных Azure. |
Если вы хотите импортировать несколько листов из книги Excel, обычно нужно запускать каждое из этих средств отдельно для каждого листа.
Дополнительные сведения см. в разделе Ограничения и известные проблемы загрузки данных в файлы Excel или из них.
Мастер импорта и экспорта
Импортируйте данные напрямую из файлов Excel с помощью мастера импорта и экспорта SQL Server. Также можно сохранить параметры в виде пакета SQL Server Integration Services (SSIS), который можно настроить и использовать повторно в будущем.
В SQL Server Management Studio подключитесь к экземпляру SQL Server Компонент Database Engine.
Разверните узел Базы данных.
Щелкните базу данных правой кнопкой мыши.
Наведите указатель мыши на пункт Задачи.
Выберите Импортировать данные или Экспортировать данные:
Дополнительные сведения см. в следующих статьях:
Службы Integration Services (SSIS)
Если вы работали с SQL Server Integration Services (SSIS) и не хотите запускать мастер импорта и экспорта SQL Server, создайте пакет SSIS, который использует в потоке данных источник «Excel» и назначение «SQL Server».
Дополнительные сведения см. в следующих статьях:
Чтобы научиться создавать пакеты SSIS, см. руководство How to Create an ETL Package (Как создать пакет ETL).
OPENROWSET и связанные серверы
В базе данных SQL Azure невозможно импортировать данные непосредственно из Excel. Сначала необходимо экспортировать данные в текстовый файл (CSV).
Поставщик ACE (прежнее название — поставщик Jet), который подключается к источникам данных Excel, предназначен для интерактивного клиентского использования. Если поставщик ACE используется на сервере SQL Server, особенно в автоматизированных процессах или процессах, выполняющихся параллельно, вы можете получить непредвиденные результаты.
Распределенные запросы
Импортируйте данные напрямую из файлов Excel в SQL Server с помощью функции Transact-SQL OPENROWSET или OPENDATASOURCE . Такая операция называется распределенный запрос.
В базе данных SQL Azure невозможно импортировать данные непосредственно из Excel. Сначала необходимо экспортировать данные в текстовый файл (CSV).
Перед выполнением распределенного запроса необходимо включить параметр ad hoc distributed queries в конфигурации сервера, как показано в примере ниже. Дополнительные сведения см. в статье ad hoc distributed queries Server Configuration Option (Параметр конфигурации сервера «ad hoc distributed queries»).
В приведенном ниже примере кода данные импортируются из листа Excel Sheet1 в новую таблицу базы данных с помощью OPENROWSET .
Ниже приведен тот же пример с OPENDATASOURCE .
Чтобы добавить импортированные данные в существующую таблицу, а не создавать новую, используйте синтаксис INSERT INTO . SELECT . FROM . вместо синтаксиса SELECT . INTO . FROM . из предыдущих примеров.
Для обращения к данным Excel без импорта используйте стандартный синтаксис SELECT . FROM . .
Дополнительные сведения о распределенных запросах см. в указанных ниже разделах.
- Распределенные запросы (Распределенные запросы по-прежнему поддерживаются в SQL Server 2019, но документация по этой функции не обновляется.)
- OPENROWSET
- OPENDATASOURCE
Связанные серверы
Кроме того, можно настроить постоянное подключение от SQL Server к файлу Excel как к связанному серверу. В примере ниже данные импортируются из листа Excel Data на существующем связанном сервере EXCELLINK в новую таблицу базы данных SQL Server с именем Data_ls .
Вы можете создать связанный сервер в SQL Server Management Studio или запустить системную хранимую процедуру sp_addlinkedserver , как показано в примере ниже.
Дополнительные сведения о связанных серверах см. в указанных ниже разделах.
Дополнительные примеры и сведения о связанных серверах и распределенных запросах см. в следующем разделе:
Предварительное требование — сохранение данных Excel как текст
Чтобы использовать другие методы, описанные на этой странице (инструкцию BULK INSERT, средство BCP или фабрику данных Azure), сначала экспортируйте данные Excel в текстовый файл.
В Excel выберите Файл | Сохранить как , а затем выберите текст (с разделителями табуляции) (*.txt) или CSV (с разделителями-запятыми) (*.csv) в качестве целевого типа файла.
Если вы хотите экспортировать несколько листов из книги, выполните эту процедуру для каждого листа. Команда Сохранить как экспортирует только активный лист.
Чтобы оптимизировать использование средств импорта, сохраняйте листы, которые содержат только заголовки столбцов и строки данных. Если сохраненные данные содержат заголовки страниц, пустые строки, заметки и пр., позже при импорте данных вы можете получить непредвиденные результаты.
Мастер импорта неструктурированных файлов
Импортируйте данные, сохраненные как текстовые файлы, выполнив инструкции на страницах мастера импорта неструктурированных файлов.
Как было описано выше в разделе Предварительное требование, необходимо экспортировать данные Excel в виде текста, прежде чем вы сможете импортировать их с помощью мастера импорта неструктурированных файлов.
Дополнительные сведения о мастере импорта неструктурированных файлов см. в разделе Мастер импорта неструктурированных файлов в SQL.
Команда BULK INSERT
BULK INSERT — это команда Transact-SQL, которую можно выполнить в SQL Server Management Studio. В приведенном ниже примере данные загружаются из файла Data.csv с разделителями-запятыми в существующую таблицу базы данных.
Как было описано выше в разделе Предварительное требование, необходимо экспортировать данные Excel в виде текста, прежде чем вы сможете использовать BULK INSERT для их импорта. BULK INSERT не может считывать файлы Excel напрямую. С помощью команды BULK INSERT можно импортировать CSV-файл, который хранится локально или в хранилище BLOB-объектов Azure.
Дополнительные сведения и примеры для SQL Server и базы данных SQL см. в следующих разделах:
Средство BCP
BCP — это программа, которая запускается из командной строки. В приведенном ниже примере данные загружаются из файла Data.csv с разделителями-запятыми в существующую таблицу базы данных Data_bcp .
Как было описано выше в разделе Предварительное требование, необходимо экспортировать данные Excel в виде текста, прежде чем вы сможете использовать BCP для их импорта. BCP не может считывать файлы Excel напрямую. Используется для импорта в SQL Server или базу данных SQL из текстового файла (CSV), сохраненного в локальном хранилище.
Для текстового файла (CSV), хранящегося в хранилище BLOB-объектов Azure, используйте BULK INSERT или OPENROWSET. Примеры см. в разделе Пример.
Дополнительные сведения о программе BCP см. в указанных ниже разделах.
Мастер копирования (ADF)
Импортируйте данные, сохраненные как текстовые файлы, с помощью пошаговой инструкции мастера копирования Фабрики данных Azure (ADF).
Как было описано выше в разделе Предварительное требование, необходимо экспортировать данные Excel в виде текста, прежде чем вы сможете использовать фабрику данных Azure для их импорта. Фабрика данных не может считывать файлы Excel напрямую.
Дополнительные сведения о мастере копирования см. в указанных ниже разделах.
Фабрика данных Azure
Если вы уже работали с фабрикой данных Azure и не хотите запускать мастер копирования, создайте конвейер с действием копирования из текстового файла в SQL Server или Базу данных SQL Azure.
Как было описано выше в разделе Предварительное требование, необходимо экспортировать данные Excel в виде текста, прежде чем вы сможете использовать фабрику данных Azure для их импорта. Фабрика данных не может считывать файлы Excel напрямую.
Дополнительные сведения об использовании этих источников и приемников фабрики данных см. в указанных ниже разделах.
Чтобы научиться копировать данные с помощью фабрики данных Azure, см. указанные ниже разделы.
Распространенные ошибки
«Microsoft.ACE.OLEDB.12.0» не зарегистрирован
Эта ошибка возникает, так как не установлен поставщик OLE DB. Установите его через Распространяемый пакет ядра СУБД Microsoft Access 2010. Не забудьте установить 64-разрядную версию, если Windows и SQL Server — 64-разрядные.
Полный текст ошибки.
Не удалось создать экземпляр поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)».
Это означает, что Microsoft OLEDB не был настроен должным образом. Чтобы устранить проблему, выполните приведенный ниже код Transact-SQL.
Полный текст ошибки.
32-разрядный поставщик OLE DB «Microsoft.ACE.OLEDB.12.0» не может быть загружен в процессе на 64-разрядной версии SQL Server.
Это происходит, когда 32-разрядная версия поставщика OLD DB устанавливается вместе с 64-разрядной версией SQL Server. Чтобы устранить эту проблему, удалите 32-разрядную версию и вместо нее установите 64-разрядную версию поставщика OLE DB.
Полный текст ошибки.
Поставщик OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)» сообщил об ошибке.
Не удалось проинициализировать объект источника данных поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)».
Обе эти ошибки обычно указывают на ошибку разрешений между процессом SQL Server и файлом. Убедитесь, что учетная запись, с которой выполняется служба SQL Server, имеет разрешение на полный доступ к файлу. Мы не рекомендуем импортировать файлы с настольного компьютера.
Источник
Конвертировать Excel в SQL
Форма для преобразования Excel в SQL
Считаете ли вы этот инструмент полезным? То поделитесь этим с друзьями или коллегами. Это поможет нам сделать наши бесплатные веб-инструменты лучше.
Эта форма позволяет вам конвертировать Excel в SQL запросы, загрузите XLS файл ниже:
Результат преобразования Excel в SQL
О преобразовании Excel в SQL
О преобразовании XLS в SQL запросы
Конвертер Excel в SQL была создана для быстрого преобразования Excel файлов в запросы SQL(Structured Query Language) для вставки в базу данных. Этот удивительный инструмент поддерживает настраиваемое имя таблицы и несколько команд MySQL для вставки. Нет необходимости загружать или устанавливать какое-либо программное обеспечение.
В результате вы получите несколько запросов:
- SQL-запрос для создания таблицы. Но это всего лишь пример «create table»; на самом деле не рекомендуется выполнять этот запрос, потому что он не содержит индексы, ключи, правильные типы и т.д.
- Insert или Replace запросы.
Как это работает?
Просто выберите нужные параметры и загрузите Excel(XLS или XLSX) файл и вы сразу получите SQL запросы.
После преобразования вы можете выполнить эти команды на вашем SQL сервере и добавить все данные в вашу базу данных.
Вам понравился этот инструмент? Вы можете задонатить нам. Это поможет нам улучшить наши бесплатные веб-инструменты.
Источник
Import data from Excel to SQL Server or Azure SQL Database
Applies to: SQL Server Azure SQL Database
There are several ways to import data from Excel files to SQL Server or to Azure SQL Database. Some methods let you import data in a single step directly from Excel files; other methods require you to export your Excel data as text (CSV file) before you can import it.
This article summarizes the frequently used methods and provides links for more detailed information. A complete description of complex tools and services like SSIS or Azure Data Factory is beyond the scope of this article. To learn more about the solution that interests you, follow the provided links.
List of methods
There are a number of methods to import data from Excel. You may need to install SQL Server Management Studio (SSMS) to use some of these tools.
You can use the following tools to import data from Excel:
Export to text first (SQL Server and SQL Database) | Directly from Excel (SQL Server on-premises only) |
---|---|
Import Flat File Wizard | SQL Server Import and Export Wizard |
BULK INSERT statement | SQL Server Integration Services (SSIS) |
BCP | OPENROWSET function |
Copy Wizard (Azure Data Factory) | |
Azure Data Factory |
If you want to import multiple worksheets from an Excel workbook, you typically have to run any of these tools once for each sheet.
To learn more, see limitations and known issues for loading data to or from Excel files.
Import and Export Wizard
Import data directly from Excel files by using the SQL Server Import and Export Wizard. You also have the option to save the settings as a SQL Server Integration Services (SSIS) package that you can customize and reuse later.
In SQL Server Management Studio, connect to an instance of the SQL Server Database Engine.
Expand Databases.
Right-click a database.
Point to Tasks.
Choose to Import Data or Export Data:
This launches the wizard:
To learn more, review:
Integration Services (SSIS)
If you’re familiar with SQL Server Integration Services (SSIS) and don’t want to run the SQL Server Import and Export Wizard, create an SSIS package that uses the Excel Source and the SQL Server Destination in the data flow.
To learn more, review:
To start learning how to build SSIS packages, see the tutorial How to Create an ETL Package.
OPENROWSET and linked servers
In Azure SQL Database, you cannot import directly from Excel. You must first export the data to a text (CSV) file.
The ACE provider (formerly the Jet provider) that connects to Excel data sources is intended for interactive client-side use. If you use the ACE provider on SQL Server, especially in automated processes or processes running in parallel, you may see unexpected results.
Distributed queries
Import data directly into SQL Server from Excel files by using the Transact-SQL OPENROWSET or OPENDATASOURCE function. This usage is called a distributed query.
In Azure SQL Database, you cannot import directly from Excel. You must first export the data to a text (CSV) file.
Before you can run a distributed query, you have to enable the ad hoc distributed queries server configuration option, as shown in the following example. For more info, see ad hoc distributed queries Server Configuration Option.
The following code sample uses OPENROWSET to import the data from the Excel Sheet1 worksheet into a new database table.
Here’s the same example with OPENDATASOURCE .
To append the imported data to an existing table instead of creating a new table, use the INSERT INTO . SELECT . FROM . syntax instead of the SELECT . INTO . FROM . syntax used in the preceding examples.
To query the Excel data without importing it, just use the standard SELECT . FROM . syntax.
For more info about distributed queries, see the following topics:
- Distributed Queries (Distributed queries are still supported in SQL Server 2019, but the documentation for this feature has not been updated.)
- OPENROWSET
- OPENDATASOURCE
Linked servers
You can also configure a persistent connection from SQL Server to the Excel file as a linked server. The following example imports the data from the Data worksheet on the existing Excel linked server EXCELLINK into a new SQL Server database table named Data_ls .
You can create a linked server from SQL Server Management Studio, or by running the system stored procedure sp_addlinkedserver , as shown in the following example.
For more info about linked servers, see the following topics:
For more examples and info about both linked servers and distributed queries, see the following topic:
Prerequisite — Save Excel data as text
To use the rest of the methods described on this page — the BULK INSERT statement, the BCP tool, or Azure Data Factory — first you have to export your Excel data to a text file.
In Excel, select File | Save As and then select Text (Tab-delimited) (*.txt) or CSV (Comma-delimited) (*.csv) as the destination file type.
If you want to export multiple worksheets from the workbook, select each sheet and then repeat this procedure. The Save as command exports only the active sheet.
For best results with data importing tools, save sheets that contain only the column headers and the rows of data. If the saved data contains page titles, blank lines, notes, and so forth, you may see unexpected results later when you import the data.
The Import Flat File Wizard
Import data saved as text files by stepping through the pages of the Import Flat File Wizard.
As described previously in the Prerequisite section, you have to export your Excel data as text before you can use the Import Flat File Wizard to import it.
For more info about the Import Flat File Wizard, see Import Flat File to SQL Wizard.
BULK INSERT command
BULK INSERT is a Transact-SQL command that you can run from SQL Server Management Studio. The following example loads the data from the Data.csv comma-delimited file into an existing database table.
As described previously in the Prerequisite section, you have to export your Excel data as text before you can use BULK INSERT to import it. BULK INSERT can’t read Excel files directly. With the BULK INSERT command, you can import a CSV file that is stored locally or in Azure Blob storage.
For more info and examples for SQL Server and SQL Database, see the following topics:
BCP is a program that you run from the command prompt. The following example loads the data from the Data.csv comma-delimited file into the existing Data_bcp database table.
As described previously in the Prerequisite section, you have to export your Excel data as text before you can use BCP to import it. BCP can’t read Excel files directly. Use to import into SQL Server or SQL Database from a test (CSV) file saved to local storage.
For a text (CSV) file stored in Azure Blob storage, use BULK INSERT or OPENROWSET. For an examples, see Example.
For more info about BCP, see the following topics:
Copy Wizard (ADF)
Import data saved as text files by stepping through the pages of the Azure Data Factory (ADF) Copy Wizard.
As described previously in the Prerequisite section, you have to export your Excel data as text before you can use Azure Data Factory to import it. Data Factory can’t read Excel files directly.
For more info about the Copy Wizard, see the following topics:
Azure Data Factory
If you’re familiar with Azure Data Factory and don’t want to run the Copy Wizard, create a pipeline with a Copy activity that copies from the text file to SQL Server or to Azure SQL Database.
As described previously in the Prerequisite section, you have to export your Excel data as text before you can use Azure Data Factory to import it. Data Factory can’t read Excel files directly.
For more info about using these Data Factory sources and sinks, see the following topics:
To start learning how to copy data with Azure data factory, see the following topics:
Common errors
Microsoft.ACE.OLEDB.12.0″ has not been registered
This error occurs because the OLEDB provider is not installed. Install it from Microsoft Access Database Engine 2010 Redistributable. Be sure to install the 64-bit version if Windows and SQL Server are both 64-bit.
The full error is:
Cannot create an instance of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)»
This indicates that the Microsoft OLEDB has not been configured properly. Run the following Transact-SQL code to resolve this:
The full error is:
The 32-bit OLE DB provider «Microsoft.ACE.OLEDB.12.0» cannot be loaded in-process on a 64-bit SQL Server
This occurs when a 32-bit version of the OLD DB provider is installed with a 64-bit SQL Server. To resolve this issue, uninstall the 32-bit version and install the 64-bit version of the OLE DB provider instead.
The full error is:
The OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)» reported an error.
Cannot initialize the data source object of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)»
Both of these errors typically indicate a permissions issue between the SQL Server process and the file. Ensure that the account that is running the SQL Server service has full access permission to the file. We recommend against trying to import files from the desktop.
Источник
Время на прочтение
4 мин
Количество просмотров 14K
Введение
Очень часто возникает задача конвертации данных из одной БД в другую, из внешнего файла разного формата в БД и наоборот. При этом типы данных внутри БД могут быть не только текстовые, но и бинарные (binary или varbinary). Бинарные и текстовые данные, как известно, в SQL Server Management Studio обрезаются и не выводятся полностью. В связи с этими недостатками пришлось написать свое приложение для конвертации данных в/из MSSQL на языке C# (.NET Framework 4.0). Приложение называется ImportExportDataSql и изначально он создавался именно для конвертации из бинарных полей БД в файлы, но потом функционал расширялся. Приложение портативное, без рекламы и не требует доступа в Интернет.
Возможности приложения
- Результат SQL-запроса выборки данных генерит данные в SQL-формате с проверкой наличия записи в таблице по указанному пользователем условию WHERE
- Несколько результатов SQL-запросов объединяются в один файл, если пользователь укажет в разных задачах одинаковое имя выходного файла
- Все настройки хранятся в XML файле
- Возможность запуска из консоли
- Быстрая загрузка/выгрузка в БД при работе с CSV
- Возможность загружать Excel-файлы в двух режимах
- Выполняются только отмеченные задачи
- Задачи, выполненные с ошибками подсвечиваются красным цветом, а без ошибок — зеленым. Сообщение об ошибке при этом выводится не только в лог, но и в виде всплывающей подсказки напротив строки, где возникла ошибка
Интерфейс приложения
При запуске приложения необходимо соединиться с БД.
После успешного соединения с БД отображается список задач.
Типы задач
Сохранить из БД в файл
Конвертация полей бинарных типов данных из БД в файл. Этот пункт выбирать нужно тогда, когда файлы хранятся в БД в бинарном виде и нужно эти файлы выгрузить на диск. При этом можно настроить имя выгружаемого файла, его ID и поле бинарного типа с содержимым файла, задав эти поля оператором SQL.
Сохранить из БД в файл (утилитой bcp)
Данный тип задачи предусматривает использование утилиты bcp. Результатом данного типа задачи будет BAT-файл и файл форматирования (с расширением fmt). BAT-файл можно по желанию изменить, что повышает гибкость. После запуска BAT-файла в текущем каталоге будут созданы файлы, скопированные из БД.
Сохранить из файла в БД
Файлы из указанной пользователем папки будут загружены в указанную таблицу и поле.
Сохранить из БД в скрипт SQL
Данным способом можно загрузить один файл, либо папку целиком, либо только список указанных файлов, либо оператором в SQL-запросе. Если будет установлена галочка «Имена полей в условии UPDATE», то SQL-запрос на выходе будет формироваться с проверками на существование записи, согласно этим полям по условию INSERT и UPDATE. Если же галочка «Имена полей в условии UPDATE» снята, то запрос будет генерироваться только на вставку записи (INSERT) без проверок существования записи.
Пример выгрузки SQL-запроса:
Из БД в скрипт SQL (только INSERT)
В отличие от типа задачи «Сохранить из БД в скрипт SQL» этот вариант следует использовать для сокращения текста SQL-запроса в котором применяется только оператор INSERT. Отметка «Имена полей в условии UPDATE» работает аналогично, как описано выше: в типе задачи «Сохранить из БД в скрипт SQL».
Из БД в скрипт SQL (только UPDATE)
В отличие от типа задачи «Сохранить из БД в скрипт SQL» этот вариант следует использовать для сокращения текста SQL-запроса в котором применяется только оператор UPDATE. Отметка «Имена полей в условии UPDATE» работает аналогично, как описано выше: в типе задачи «Сохранить из БД в скрипт SQL».
Статический скрипт SQL
В случае, если нужно подготовить БД, прежде чем выполнить, например: вставку данных, то этот запрос будет выгружен без всяких изменений и добавлен в SQL-файл на выходе.
Сохранить из Excel в скрипт SQL
Преобразует данные из Excel в SQL-скрипт, при чем можно указать не только имя файла и имя листа, но еще и номер строки с которой начать считывание и номер последней обрабатываемой строки. Тип обработки Excel-файла «Поиск по заголовку» будет выполнять выгрузку с поиском текста заголовка, который укажет пользователь, последовательность полей при этом не важна и её можно менять. Тип обработки Excel-файла «Конвертировать все значения ячеек в таблицу» предполагает задание нескольких обязательных полей: Номер строки, номер столбца, значение ячейки и необязательных полей: имя листа и имя файла. Это может быть удобно, когда в системе есть одна универсальная таблица с обязательными полями, перечисленными выше и вся обработка этой таблицы происходит хранимой процедурой или приложением.
Сохранить из БД в CSV
Простая выгрузка данных из БД в CSV с символом-разделителем «точка с запятой» и обрамлением строк символом двойных кавычек.
Сохранить из CSV в SQL
Похожа на выгрузку из Excel, но более расширена за счет параметров «Символ-разделитель», Код кодировки, «Пустые значения заменять на NULL» и «Количество строк в блоке». Файлы обрабатываются построчно, даже если они заняты другим приложением. Результат обработки записывается в SQL-файл по-блокам.
Сохранить из CSV в БД
Выгрузка происходит напрямую в БД очень быстро, по-блокам, за счет использования класса BulkInsert. Большие CSV файлы (в несколько Гб) могут загружаться в БД за несколько минут.
Дальнейший список доработок
- Добавить функцию конвертации структуры БД, с проверкой существования объектов БД.
- Добавить теги к задачам и фильтр по тегам.
- Добавить возможность выбора формата SQL для генерации данных, чтобы можно было работать не только с MSSQL, но и с другими СУБД.
Вывод
Надеюсь, что это приложение поможет и Вам в работе. Выкладываю его в свободное пользование.
Скачать Windows приложение ImportExportDataSql (бесплатно)
Сообщество VK для поддержки пользователей и желающих пообщаться с автором.