寻找将大型excel(xlsx)文件加载到SQL中的有效方法

我正在寻找备用数据导入解决scheme。 目前我的过程如下:

  1. 在Excel中打开一个大的xlsx文件
  2. 全部replace“|” (pipe道)与一个空间或另一个独特的性格
  3. 将文件保存为pipe道分隔的CSV
  4. 使用SQL Server Management Studio 2008 R2中的导入向导导入CSV文件

该过程起作用; 然而,步骤1-3需要很长时间,因为被加载的文件非常大(大约100万条logging)。

基于一些研究,我发现了一些潜在的解决scheme:a)批量导入 – 由于需要将文件转换为平面(或CSV)格式,所以这不幸并没有消除上述步骤1-3 b)OpenRowSet / OpenDataSource – 这个问题有两个问题。 首先,加载需要很长时间(一百万条logging大约需要2小时)。 其次,当我尝试一次加载多个文件(每个包含100万条logging的大约20个文件)时,我收到“内存不足”错误

我没有试过SSIS; 我听说它有大的xlsx文件的问题

所以这导致我的问题。 有没有解决scheme/替代选项,将导致大型Excel文件的导入更快?

真的很感谢帮助。

我喜欢Excel作为一个数据可视化工具,但它是裤子作为数据传输层。 我的首选是用JET / ACE驱动程序查询它,或者使用C#作为非表格数据 。

我还没有把它变成数以百万计,但我不得不相信,第一种方法将不得不比你现在的速度更快,仅仅是因为你不必为你的数据执行双读写操作。

  • Excel来源作为查找转换连接
  • 脚本任务在SSIS导入excel电子表格

之前做过的一些事情(我提出,因为我看到你的文件types是XLSX,而不是XLS)是通过winzip打开文件,将XML数据取出,然后导入它。 从2007年开始,XLSX文件实际上是一个包含许多文件夹/文件的zip文件。 如果excel文件很简单(不是很多macros,图表,格式化等),你可以从后台的XML文件中提取数据。 我知道你可以通过WINZIP看到它,我不知道其他压缩应用程序。