我的思路是:这个问题大概是卡在使用ADO.NET架构行集进行枚举,所以所有的文件都必须同源具有相同的架构,如果能动态地指定Foreach循环的源就好了。
能不能采用包配置输出这个连接字符串,然后在下一次循环之前修改包配置文件,将下一个Excel文件的名字替换上一次循环的Excel文件名称?好像SSIS组件中的文件系统不能修改文件中的内容,有没有其他办法呢?或者在定义ado连接的时候采用变量的方式,貌似也难办到阿。

解决方案 »

  1.   

    MSSQL 有自动获得某文件夹中文件名的功能吗?
      

  2.   

    如果行的话,可以考虑把各个EXCEL文件数据先导入到一个临时表中,再检查该表的结构与要导入的表的结构是否相同,再决定是否插入到要导入的表中去.
      

  3.   

    foreach循环的文件循环可以获取目录及子目录中的文件路径、名称。
      

  4.   


    foreach循环的文件循环可以获取目录及子目录中的文件路径、名称,并且可以传递进变量。
    现在要做的是目录中会不断的增加Excel文件,我需要自动的成批导入数据库。而且sql server 2005同一个excel文件中的多个工作表好像不能通过导入导出工具同时导入数据库的同一张表。
      

  5.   

    sqlserver 遍历目录下文件没有问题。
    sqlserver 遍历一个文件无规律且个数不定的工作表貌似困难些。
      

  6.   

    你先保证能够实现如下两篇文章的内容
    批量导入excel文件
    http://blog.csdn.net/jinjazz/archive/2008/07/25/2710169.aspx
    循环工作表
    http://blog.csdn.net/jinjazz/archive/2008/07/28/2722987.aspx然后理解一下其中变量的用法,批量导入的时候用到一个用户::xlsFile变量,循环工作表使用了一个用户::table变量,在第二篇文章中有一个细节是编辑excel数据源链接的Expressions,第16到18步。这个用法是把excel的链接改为变量定义。同理在枚举excel文件之后,嵌套一个枚举excel架构的容器,然后把枚举链接的Expressions里面的servername属性改为用户::xlsFile就可以了。没有这个步骤你会永远钉着一个excel来枚举所以会出错
      

  7.   

    好久没看SSIS了..严重支持..学习...
      

  8.   

    如果是sql2005,作etl或者普通数据迁移的时候还是提倡多使用ssis,他在管理,可配置和迁移上都要远远方便于dts或者普通的sql语句.这是我工作中的一个ssis包,虽然算不上复杂,但是如果不用ssis做资源整合将会很难管理.
      

  9.   


    就你发的这图来说,已经不单纯是dts能做的了吧 .
    dts能做的也只是其中有限的一步分,抽取和转换吧。这图已超出导入导出的范筹。
      

  10.   

    UP
    關於SSIS,兩年前看過
    清華大學有本書專講SSIS的書講得很詳細;書名不記得了;定價好像68元的
      

  11.   

    that is very good, 好好,顶
      

  12.   

    我上传了ssis设计包,感兴趣的朋友可以下载看下
    http://download.csdn.net/source/810313
      

  13.   

    看看XLS的结构是如何的,然后搞成文本格式,然后COPY一行,自动截取,存入 然后下一行 貌似LINUX的正则表达式很强的
      

  14.   

    MARK
    PS: 
    我的目标是 ----> ^_^
      

  15.   

    好东西,学学,看来还是能用得上的地方!
    =================================
    北京思源计算机培训中心(http://www.ciitc.com)