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

时间:2013-09-16 19:44:19

标签: sql sql-server excel csv ssis

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

  1. 在excel中打开一个大型xlsx文件
  2. 全部替换“|” (管道)带有空格或其他独特字符
  3. 将文件另存为竖线分隔的CSV
  4. 使用SQL Server Management Studio 2008 R2中的导入向导导入CSV文件
  5. 这个过程有效;但是,步骤1-3需要很长时间,因为加载的文件非常大(大约100万条记录)。

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

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

    所以这引出了我的问题。是否有任何解决方案/备用选项可以更快地导入大型Excel文件?

    非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

我喜欢Excel作为数据可视化工具,但它是作为数据传输层的裤子。我的偏好是使用JET/ACE driver进行查询,或使用C#进行non-tabular data

我没有把它提升到数百万,但我不得不相信第一种方法必须比你现在更快,因为你不必为数据执行双读和写操作

答案 1 :(得分:0)

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