如何将高度格式化的数据从Excel导入数据库?

时间:2009-01-05 18:56:09

标签: sql-server excel ssis

将高度格式化的数据从Excel导入SQL Server的最佳方法是什么? 基本上我有250多个Excel文件,这些文件是以我们的业务用户更喜欢的格式从报告工具导出的。这是第三方工具,无法以任何其他格式导出数据。我需要每月“清理”这些文件并将它们导入数据库。我想使用SQL Server 2005

文件格式如下所示:

                                                         Report Name

                                                     Report Description

                                    MTH/DEC/2003 MTH/JAN/2004 MTH/FEB/2004 
                                    Data Type  Data Type    Data Type

Grouping 1                           1900         1700         2800

  Grouping 2                         1500         900          1300

    Detail                           300          500          1000

    Detail                           1100         200          200

    Detail                           100          200          100

7 个答案:

答案 0 :(得分:1)

你可以写一个简单的解析器应用程序。有很多api可以处理读取excel文件。

我用java编写了一个,只用了一两天。

here是一个api。

祝你好运

编辑:忘记提及我们还需要一个sql api,例如JDBC。我们再次将JDBC用于大多数应用程序并且工作得很好。

答案 1 :(得分:1)

就我个人而言,我会使用SSIS。设置文件格式看起来相对复杂可能并不简单(但我怀疑无论使用什么工具都可能都是这样),但只要它保持一致,它每个月都会快速运行,SSIS包很容易置于源头控制之下。由于SSIS是SQL Server的一部分,因此很容易确保所有服务器都可以使用它。关键是要充分了解该格式与如何在数据库中存储数据的关系。无论你使用什么工具,这都是困难的部分。

答案 2 :(得分:0)

假设您有Microsoft Excel,您还可以使用Excel自己公开的ActiveX接口。更多信息:

http://msdn.microsoft.com/en-us/library/wss56bz7(VS.80).aspx

您可以在任何可以使用ActiveX(C ++,VB6,VB.NET等)的东西中使用它来创建解析器,以跟进Berek所说的内容。

答案 3 :(得分:0)

我之前用perl和MYSQL做过这个。我写了一个简单的perl脚本,它解析文件并将内容输出到.sql文件。然后,这可以手动完成或包含在perl脚本中,打开MYSQL并使用.sql文件。

答案 4 :(得分:0)

您可能希望查看SQL Server中的CLR过程和函数。使用CLR过程,您可以在VB或C#.NET应用程序中执行所有清理操作,但仍然可以像运行任何其他存储过程或UDF一样从SQL Server运行作业。

答案 5 :(得分:0)

这看起来有点简单,但您可以简单地以csv格式转储数据并对输出进行一些解析以转换为SQL的插入语句。

答案 6 :(得分:0)

对于基于java的应用程序,POI(http://poi.apache.org/)非常适合Excel集成应用程序。