Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在ssis包中创建平面文件_Sql Server_Ssis_Sql Server 2008 R2 - Fatal编程技术网

Sql server 在ssis包中创建平面文件

Sql server 在ssis包中创建平面文件,sql-server,ssis,sql-server-2008-r2,Sql Server,Ssis,Sql Server 2008 R2,我正在从SQLServer数据库创建csv导出,我熟悉这样做的过程,但不可否认,我从未完全理解。该过程包括创建一个“模板”文件,该文件定义文件导出的列和结构。一旦“模板”文件存在,您就可以使用数据流任务填充该文件,并使用文件系统任务将其复制到最终存储目标,使用您想要的任何文件名(通常是日期/时间戳) 没有中间的“模板”文件,您就不能直接创建文件,这有什么原因吗?我环顾了一下四周,似乎所有建议的解决方案都涉及到连接到现有文件。我看到“文件”连接管理器有一个“创建文件”的使用类型,但您不能在任何文件

我正在从SQLServer数据库创建csv导出,我熟悉这样做的过程,但不可否认,我从未完全理解。该过程包括创建一个“模板”文件,该文件定义文件导出的列和结构。一旦“模板”文件存在,您就可以使用数据流任务填充该文件,并使用文件系统任务将其复制到最终存储目标,使用您想要的任何文件名(通常是日期/时间戳)

没有中间的“模板”文件,您就不能直接创建文件,这有什么原因吗?我环顾了一下四周,似乎所有建议的解决方案都涉及到连接到现有文件。我看到“文件”连接管理器有一个“创建文件”的使用类型,但您不能在任何文件系统任务中使用它。您可以针对文件使用的唯一文件系统类型连接管理器是“复制”、“删除”、“移动”、“重命名”和“设置属性”


有没有办法在包运行时创建一个文件并填充它?

SSI的整个要点是创建一个包含元数据的数据流,以便可以对数据进行操作-如果您只想将数据库直接转到CSV,那么最好从命令行使用bcp(大容量复制程序)。如果您想将其作为SSIS包的一部分,只需添加一个执行流程任务并将命令行添加到该任务中即可。通过向任务添加表达式,可以动态更改包含的列或输出文件。您还可以使用Excute SQL任务通过TSQL调用bcp

另一种选择是将查询中的所有列连接起来,并用逗号文本隔开,然后输出到只有一个非常宽的列的文本文件中


有关bcp的文档,请参见

,您可以通过脚本转换来完成。