2011-12-21 43 views
3

我的要求是,在nop商务1.9我必须插入多个折扣形式的Excel数据表有很多数据,所以在做这个任务之前我需要清楚哪一个是最好的解决方案。SSIS包是导入和导出大量数据的最佳解决方案吗?

Which is the fastest way to upload the excelsheet having more than 100,000 lines of code in C#?

我读了这个问题,答案发现SSIS是一个选项。

确实是SSIS最适合大尺寸文件的导入和导出选项。 以及如果我使用SSIS软件包,还可获得哪些其他好处?

回答

3

对于〜100,000行,性能不应该是这类数据的重大问题。 SSIS可以做到这一点,但它不是唯一的选择。我认为有三种合理的方法来做到这一点:

SSIS: 这可以读取excel文件。如果电子表格表现良好(即可以被信任 被正确布置)然后SSIS可以加载内容。它有一些错误记录 功能,但在实践中它只能有效地转储日志文件或写错误出 日志表。错误的行可以被引导到一个保存表。

优点

  • 加载过程是相当容易开发。
  • 如果电子表格格式必须更改,SSIS包可以独立于应用程序进行更改。

    • 依赖于具有系统上安装的SSIS运行时:
    • 可以直接从电子表格文件

    缺点阅读。

  • SSIS确实是一个服务器端安装;错误处理通常包括将消息写入日志。您需要找到一种方法将错误日志提供给用户来解决错误。

BCP或BULK INSERT: 您可以将电子表格导出为CSV和使用BCP或BULK INSERT语句加载该文件。但是,这要求将文件导出为CSV并将其复制到数据库服务器上的驱动器或其可访问的共享位置。

优点:

  • 快速
  • BCP可以被认为是存在于服务器上。

缺点:

  • 需要手动步骤,以导出为CSV
  • 文件必须放在可安装在服务器
  • 有限的错误处理设施上的卷上。

SqlBulkCopy的API: 如果您已经使用的.Net你可以使用OLE自动化或ODBC电子表格中读取并加载使用SQL Server批量加载API的数据。这要求您编写一个C#例程来执行导入。如果手动加载电子表格,则可以从用户的PC加载。

优点

  • 不需要SSIS被安装在计算机上,
  • 文件可以在用户的​​PC上位于
  • 加载过程可以互动,呈现错误给用户,并允许他们通过多次重试来纠正错误。

缺点:

  • 大部分开发工作。
  • 真的只适用于应用程序的功能。
0

错误记录 - 无效行可以轻松登录到单独的表中进行进一步验证。

1

SSIS是一个很好的解决方案,但如果性能对您来说最重要,我会尝试将excel文件转换为纯文本文件并使用BULK INSERT functionality

2

SSIS是一个ETL工具。您可以执行转换,错误处理(如Kumar提到的),SSIS中的查找,可以重定向无效行,添加派生列等等。您甚至可以向其添加配置文件以更改某些属性/参数...

还有更多选项可以将数据加载到SQL。 1,SSIS - 你需要设计工作流(你需要BIDS或VS设计和测试的封装) 2,如所提到的“底马”,就可以将数据导出到平面文件并使用BCP /大容量插入 3,你可以使用OPENROWSET操作上的SQL(即席分布式查询必须能够使用此功能),然后,你可以查询从SQL Excel文件 - 这可能是最简单的方式如何读取数据:

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\test.xls', 'SELECT * FROM [Sheet1$]') 

- try to look on google for OPENROWSET + EXCEL to get more examples. In this scenario you can query also text files, ACCESS ... 

有更多的方法如何做到这一点,但它确实取决于你想要达到的目标。在这种情况下,100K行实际上并不多。

0

如果您需要执行复杂的转换和所需的值检查,并且文件非常大(Excel文件中的100,000行很小),SSIS可能是最佳解决方案。这是一个非常强大,复杂的工具。

然而,这不过是一个大的,SSIS是很难用途不同学习和工作中,是难以调试。我执行导入和导出为我的全职工作,我花了一年多来获得舒适与SSIS。 (当然我做什么用的数据是非常复杂的,而不是在所有的简单易懂,所以借此与一粒盐。)现在,如果你没有做任何复杂的转换,它并不坏成立,但这是隔靴搔痒一样简单DTS是为实例,主要是因为它有这么多可用的功能。如果你正在做简单的进口没有转变,我相信其他的方法可能更有效。

就性能而言,SSIS可以发光(它可以将数百万甚至更多的记录移动到速度至关重要的数据仓库),或者根据设置的方式成为真正的狗。要获得性能优化的软件包,需要很高的技能。

+0

我试图转储从Oracle,MySQL数据库和网站,所以我想即,通过code.so做网站,从这个过程中,你可以请建议我的东西是在asp.net mvc的精益求精,到我的SQL Server? ? – 2016-11-14 07:46:14