在不使用 for each loop container in ssis 的情况下,我必须转储一个包含多个文件的文件夹
Without using for each loop container in ssis , I have to dump one folder that contains several files in it
有一个文件夹包含 4 个 csv 文件,我必须在不使用 foreach 循环容器的情况下将其转储到 sql 服务器。怎么做?
您可以使用脚本任务来完成。
脚本任务将使用文件系统对象遍历文件夹中的文件,逐行读取它们,并将行插入数据库。
最简单的答案。为每个 csv 文件创建数据流。
我的猜测是,如果您不使用 foreach,则文件不相同。
解决方案
最简单的方法是使用 Execute sql Task
将这些文件导入 sql,但首先您应该使用 Script Task
[=26 构建整个 sql 命令=]
只需按照本文了解有关将 csv 导入 SQL 的更多信息:
例子
假设我们在目录 C:\New\
中有以下 4 个具有以下结构的平面文件:
Col1,Col2,Col3
bla,bla,bla
bla,bla,bla
首先我们要添加一个Execute Sql Task
来创建SqlTable
CREATE TABLE TBLTEMP(COL1 VARCHAR(50),
COL2 VARCHAR(50),
COL3 VARCHAR(50))
其次我们必须添加字符串类型的变量@[User::strQuery]
- 添加脚本任务和 select
@[User::strQuery]
作为读写变量
在脚本任务中编写以下代码:
Public Sub Main()
Dim strQuery As String = ""
For Each strFile As String In IO.Directory.GetFiles("C:\New", "*.csv", IO.SearchOption.TopDirectoryOnly)
strQuery &= vbNewLine &
"BULK INSERT [TBLTEMP] " & vbNewLine &
" FROM '" & strFile & "' WITH" & vbNewLine &
"(FIELDTERMINATOR = ','," & vbNewLine &
"ROWTERMINATOR = '\n' ) " & vbNewLine &
"GO" & vbNewLine
Next
Dts.Variables.Item("User::strQuery").Value = strQuery
Dts.TaskResult = ScriptResults.Success
End Sub
添加一个Execute Sql Task
并使用@[User::strQuery]
作为Sql命令(Select源类型=变量)
屏幕截图
首先执行Sql任务
脚本任务
第二次执行Sql任务
整包
有一个文件夹包含 4 个 csv 文件,我必须在不使用 foreach 循环容器的情况下将其转储到 sql 服务器。怎么做?
您可以使用脚本任务来完成。
脚本任务将使用文件系统对象遍历文件夹中的文件,逐行读取它们,并将行插入数据库。
最简单的答案。为每个 csv 文件创建数据流。
我的猜测是,如果您不使用 foreach,则文件不相同。
解决方案
最简单的方法是使用 Execute sql Task
将这些文件导入 sql,但首先您应该使用 Script Task
[=26 构建整个 sql 命令=]
只需按照本文了解有关将 csv 导入 SQL 的更多信息:
例子
假设我们在目录 C:\New\
中有以下 4 个具有以下结构的平面文件:
Col1,Col2,Col3
bla,bla,bla
bla,bla,bla
首先我们要添加一个
Execute Sql Task
来创建SqlTableCREATE TABLE TBLTEMP(COL1 VARCHAR(50), COL2 VARCHAR(50), COL3 VARCHAR(50))
其次我们必须添加字符串类型的变量
@[User::strQuery]
- 添加脚本任务和 select
@[User::strQuery]
作为读写变量 在脚本任务中编写以下代码:
Public Sub Main() Dim strQuery As String = "" For Each strFile As String In IO.Directory.GetFiles("C:\New", "*.csv", IO.SearchOption.TopDirectoryOnly) strQuery &= vbNewLine & "BULK INSERT [TBLTEMP] " & vbNewLine & " FROM '" & strFile & "' WITH" & vbNewLine & "(FIELDTERMINATOR = ','," & vbNewLine & "ROWTERMINATOR = '\n' ) " & vbNewLine & "GO" & vbNewLine Next Dts.Variables.Item("User::strQuery").Value = strQuery Dts.TaskResult = ScriptResults.Success End Sub
添加一个
Execute Sql Task
并使用@[User::strQuery]
作为Sql命令(Select源类型=变量)
屏幕截图
首先执行Sql任务
脚本任务
第二次执行Sql任务
整包