作为标题,我想在SQL表中插入使用C#的文件夹中可用的文件列表。所有文件都是CSV。
在脚本结束时,我找不到任何记录,但我没有任何错误代码。 我想将此代码用于ssis脚本。
SqlConnection theSqlServer = new SqlConnection(@"Server=sql\insta; Database=database; Trusted_Connection=True;");
theSqlServer.Open();
SqlCommand theSqlCommand = new SqlCommand("INSERT INTO [File] ([FileName]) VALUES (" + fileName + " )", theSqlServer);
MessageBox.Show(fileName);
theSqlServer.Close();
请你能帮我找一下这段代码中的错误吗?
答案 0 :(得分:0)
如果您有权访问SQL Server Profiler,您可以捕获服务器再次发出的实际SQL语句(如果实际发出了一个!)
答案 1 :(得分:0)
首先,你创建了一个SqlCommand
,但是你没有执行它,你需要使用theSqlCommand.ExecuteNonQuery()
使用SSIS实现此目的的另一种方法 (更好的方式)
使用SQL任务实现此目的不是最佳做法(它将为每个命令打开一个连接,并且您的查询未参数化,因此您拥有SQL Injection ALERT!!
。
在SSIS中,您可以执行以下操作:
假设您已将 OLEDB连接管理器添加到要导入数据的SQL服务器
User::FolderPath
的SSIS变量System.String
,其值等于包含CSV文件的旧路径DFT Import
Script Component
(将其用作源)OutFileName
的输出列DT_WSTR
,长度= 4000
User::FolderPath
变量添加到脚本ReadOnlyVariables
在脚本窗口中编写以下代码(我使用的是Vb.net):
Private strFolderPath As String = String.Empty
Public Overrides Sub PreExecute()
MyBase.PreExecute()
strFolderPath = Variables.RowCount
End Sub
Public Overrides Sub CreateNewOutputRows()
Dim strFiles() As String = IO.Directory.GetFiles(strFolderPath, "*.csv", IO.SearchOption.AllDirectories)
For Each strFiles As String In strFiles
With Output0Buffer
.AddRow()
.OutFilename = strFiles
End With
Next
End Sub
添加OLEDB Destination
OLEDB Connection