2010-04-27 274 views
0

我想知道我的最佳选择是从Excel文件导入数据,每周或每月。起初,我认为我会使用SSIS,但经过与看似简单的任务斗争后,我开始重新思考我的计划。只需手工编写SQL或使用SSIS包的服务,会更好还是更简单?基本过程如下:SQL Server 2005从Excel导入

  1. 一个单独的进程将下载.xls文件到本地文件共享。
  2. xls文件将具有如下文件名:'myfilename MON YY'。
  3. 我将需要从文件名中读取月份和年份,将其重新格式化为sql日期,然后查询DimDate表以找到相应的日期键。
  4. 对于每行(前2个标题行之后),使用日期键插入数据,除非行是总行,则忽略。

这里有一些我已经遇到与SSIS的问题: 我可以分析从平面文件数据源的日期字符串,但似乎无法与Excel数据源做到这一点。此外,一旦解析,我似乎无法将字符串转换为日期以执行日期键的查找。例如,我想做的事情是这样的:从DimDate

选择DateKey其中ActualDate =转换(日期时间,'01 - ” + 'JAN-10',120)

,但我不认为可以在表达式构建器中使用'convert'或'datetime'关键字。我一直无法找到我可以编辑SQL的位置,忽略前两行数据。

我对使用SSIS非常怀疑,因为它看起来像是一种可以更有效地完成自己编写SQL的事情的Kludgy方法,但我可能会被迫使用SSIS。思考?

回答

3

SSIS绝对是一个方向。

为了解决您的问题:(DT_DBTIMESTAMP)是您想要的转换。语法有点不同。例如转换您的示例日期,我会用:

(DT_DBTIMESTAMP)"01/01/2010" 

如果您使用的是表达一个派生列,以取代您的字符串日期(或创建一个新列),然后你可以做对datetime列的查询中一个DB。

如果您需要排除前两行,您需要编写一条SQL语句来查询文件(而不是Excel文件读取器源)或使用条件分割来根据任何条件将它们丢弃每次进口都可以重复。

平面文件更易于使用,并允许您丢弃x个最初的行。

+2

我同意肯尼思 - SSIS是使用的工具。 关于日期格式的一个评论 - 我会使用YYYY-MM-DD - 它是ISO/SQL明确的格式。 – 2010-04-28 17:38:55