Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Количество сообщений
5
Зарегистрирован:
02-04-2015, 23:12:52
Создание схемы импорта
Доброго времени суток!
В моем прайсе есть данные, которые расположены в столбцах АА, АК, AL и т.п.
Если в схеме импорта указываю АК, то программа берет данные из столбцов А и К.
Как сделать, чтобы данные брались из одного столбца?
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Чтение прайс-листа Excel через ODBC/OLEDB
Да, такая проблема существует. В полной версии ее можно решить через выполнение макроса VBA, который скопирует/перенесет необходимые колонки. В бесплатной версии можно воспользоваться чтением прайс-листа не штатными средствами программы, а посредством SQL-запроса который прочитает информацию например из источника ODBC Excel и запишет в нужные колонки/поля для предварительного просмотра прайса.
Приложите прайс-лист (или его часть, достаточную для создания примера и тестирования SQL-запроса) и укажите какая у вас версия Microsoft SQL Server (в том числе для какой разрядности процессора) и какая версия Microsoft Office/Excel (и его разрядность).
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Загрузка прайс-листов из XML
Судя по присутствию нескольких колонок Size, сложилось впечатление, что вы преобразовали XML в XLSX и затем импортируете в базу данных. Если у вас файл изначально в XML - то его так же можно легко импортировать.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Чтение CSV средствами MS SQL
Прочитать CSV-файл средствами Microsoft SQL Server можно несколькими способами, самый простой через BULK INSERT. Например, если вы выполните в SQL Server Management studio следующий SQL-запрос, то он вернет вам набор данных из вашего файла CSV.
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
Microsoft Access Database Engine 2010
Для чтения файлов Excel непосредственно в MS SQL для вашего случая, вам потребуется для начала установить драйвер Microsoft.ACE.OLEDB.12.0.
И переконфигурировать сервер СУБД.
Код
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO
Затем вы сможете посмотреть названия полей (Путь и имя файла C:\TEMP\price.xlsx следует заменить на свои):
Код
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=C:\TEMP\price.xlsx', [Лист1$])
Количество сообщений
64
Зарегистрирован:
11-11-2008, 04:35:57
Как загрузить прайс из Excel через OLE Automation
Мне, когда нужно вытащить какое-то значение ячейки из экселевского листа, открываю его через OLE Automation и читаю из Cells. Сейчас переделал чтение для такого прайса как в примере. Держите вариант на заметку (если колонок не хватает, добавляйте их так же):
set @file_name = :FILENAME;
exec @hr = sp_OACreate 'Excel.Application', @IExcel OUT
exec @hr = sp_OASetProperty @IExcel, 'DisplayAlerts', 0
exec @hr = sp_OAMethod @IExcel, 'Application.workbooks.Open', @IWorkbook OUT , @file_name
SET @iRow = 1;
while 1=1
begin
SET @code = NULL;
SET @name = NULL;
SET @photo = NULL;
SET @price = NULL;
SET @url = NULL;
SET @folder_name = NULL;
SET @manuftac = NULL;
SET @attributes = NULL;
SET @sCellStr = 'Application.Activeworkbook.Activesheet.Cells(' + LTRIM(STR(@iRow, 10, 0)) + ',1).value';
exec @hr = sp_OAGetProperty @IExcel, @sCellStr, @code OUT;