您可以将SSIS项目与网站集成吗?

问题描述 投票:0回答:3

根据我的项目要求,我需要在公司网站上开发一些页面,用户可以在该页面上载一个excel表格以将数据传输到MS SQL Server。我正在开始使用SSIS,但是我想知道如何使这部分成为网页。

.net sql-server ssis sql-server-data-tools
3个回答
0
投票

您可以安排SSIS在sql作业中运行,每隔几分钟左右运行一次。对每个循环使用a,以便在没有文件的情况下实际上不执行任何操作。


0
投票

您不能在Web应用程序中使用SSIS包。同样,在您的应用程序内部处理Excel文件可能很复杂,因此,解决此问题的一种常用方法是:

  1. 将上载的文档存储在特定的文件夹中。
  2. 使用类似(F2020_05_29_10:330:24_3283)的时间戳记或其他任何使文件唯一的方法来命名文件
  3. 将SSIS包部署到SQL Server并安排作业以运行该包
  4. 在您的软件包中,查看该特定文件夹,以查看是否有任何新的传入文件。
  5. 如果有一个或多个文件,请在您的SSIS包中对其进行处理

另一种方法是使用COM Interop或OpenXML处理您的Excel文件,这可能很复杂。


0
投票

是,可以,但是您可能不想。

Excel和SSIS充其量是挑剔的伙伴。 SSIS相信可以在设计时确定并在运行时遵守的一组可靠的元数据。 Excel根据对前8行数据的采样来解释元数据。如果Excel文件是由机器生成的,则SSIS可以很好地协同工作,但是由于这将是用户上传文件,因此您将花费大量时间进行故障排除,为什么两个看似相同的电子表格无法解析相同的电子表格SSIS中的方式。

您如何使SSIS运行?您可以使用对象模型或使用dtexec.exe使其完成。这两种方法仅在您已为SQL Server授予服务器许可时才有效。如果在Web服务器上安装对象库或Integration Services服务,则需要为企业购买另一个SQL Server许可证。那很贵。

我,也许是最喜欢Stack Overflow上SSIS的人怎么办?我会使用OpenXml库,例如EPPlus。我在Reading Excel files without 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;
}

[请注意,如果您正在玩弄,这就是last LGPL version of EPPlus。 5+版需要许可,但比SQL Server许可便宜得多。

© www.soinside.com 2019 - 2024. All rights reserved.