Можете ли вы интегрировать проект SSIS с веб-сайтом? - PullRequest
0 голосов
/ 29 мая 2020

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

Ответы [ 3 ]

1 голос
/ 29 мая 2020

Вы не можете использовать пакет SSIS в веб-приложениях. Также обработка файла Excel внутри вашего приложения может быть завершена, поэтому один из распространенных подходов к этой проблеме:

  1. Сохранение загруженного документа в определенной папке c.
  2. Назовите файлы, используя метка времени, например (F2020_05_29_10: 330: 24_3283), или любые другие методы, чтобы сделать их уникальными
  3. Разверните свой пакет SSIS на SQL сервере и запланируйте задание для запуска пакета
  4. в вашем пакете загляните в эту папку c, чтобы узнать, есть ли новый входящий файл.
  5. Если есть один или несколько файлов, обработайте их внутри вашего пакета SSIS

Другой способ - обработка файла Excel с помощью COM Interop или Open XML, что может быть сложно.

0 голосов
/ 29 мая 2020

Да, можете, но, вероятно, не хотите.

Excel и SSIS в лучшем случае привередливы. SSIS верит в твердый набор метаданных, который устанавливается во время разработки и соблюдается во время выполнения. Excel интерпретирует метаданные на основе выборки первых 8 строк данных. Если файл Excel сгенерирован машиной, то SSIS и он могут работать вместе достаточно хорошо, но поскольку это будут пользователи, загружающие файлы ... вы потратите много времени на устранение неполадок, почему две, казалось бы, одинаковые электронные таблицы не будут анализировать одно и то же способом в SSIS.

Как заставить SSIS работать? Либо вы используете объектную модель, либо dtexe c .exe, чтобы сделать его go. Оба этих подхода действительны только в том случае, если вы лицензировали сервер для SQL Server. Если вы устанавливаете библиотеку объектов или службу Integration Services на свой веб-сервер, вам нужно будет купить еще одну лицензию SQL Server для вашего предприятия. Это дорого.

Чем я, наверное, человек, больше всего влюбленный в SSIS на Stack Overflow, делаю? Я бы использовал библиотеку Open Xml, например EPPlus. Я писал о подходе к Чтению файлов Excel без Excel

using OfficeOpenXml;
// ...
/// Get data from Excel worksheet, assuming columns A-G are desired
public Dictionary<string, List<string>> GetExcelDriverData(string sourceFile)
{
    Dictionary<string, List<string>> d = new Dictionary<string, List<string>>();
    System.IO.FileInfo fi = new System.IO.FileInfo(sourceFile);
    using (ExcelPackage ep = new ExcelPackage(fi))
    {
        ExcelWorkbook wb = ep.Workbook;
        ExcelWorksheet ws = wb.Worksheets.First();
        if (ws != null)
        {
            // 1 based array to 7, inclusive
            for (int i = ws.Dimension.Start.Row+1; i < ws.Dimension.End.Row+1; i++)
            {
                List<string> row = new List<string>() { ws.Cells[i, 1].Value.ToString()
                ,   ws.Cells[i, 2].Value.ToString()
                ,   ws.Cells[i, 3].Value.ToString()
                ,   ws.Cells[i, 4].Value.ToString()
                ,   ws.Cells[i, 5].Value.ToString()
                ,   ws.Cells[i, 6].Value.ToString()
                ,   ws.Cells[i, 7].Value.ToString()
                };

                d[ws.Cells[i, 7].Value.ToString()] = row;
            }
        }
    }

    return d;
}

Обратите внимание, что это последняя версия EPPlus LGPL, если вы не знаете, что делать. . Версия 5+ требует лицензирования, но она намного дешевле, чем лицензия SQL Server.

0 голосов
/ 29 мая 2020

Вы можете запланировать выполнение SSIS в задании sql каждые несколько минут или около того. Используйте a для каждого l oop, чтобы он ничего не делал, если файла нет.

...