我正在尝试循环浏览文件夹。每个文件的后缀都可以在SQL表的列中找到。此后缀是我的LINQ语句的WHERE
,是脚本任务中的变量(显示在注释中)。如果谓词为真,我希望它从SQL表中同一行的另一列返回值,并将另一列的值分配给我的脚本任务中的另一个变量。现在我只是在做一个MessageBox.Show来测试。
我在我的SSIS包中设置了一个OLEDB连接管理器,我不知道如何在任务中运行LINQ查询,我想我错过了如何设置连接。任何指针都会感激不尽。这是我有多远:
public void Main()
{
string sourcePath = Dts.Variables["User::sourcePath"].Value.ToString();
string archivePath = Dts.Variables["User::archivePath"].Value.ToString();
string destinationPath = Dts.Variables["User::archivePath"].Value.ToString();
SqlConnection conn = new SqlConnection();
conn = (SqlConnection)(Dts.Connections["Server.Database"].AcquireConnection(Dts.Transaction) as SqlConnection);
DirectoryInfo directoryInfo = new DirectoryInfo(sourcePath);
FileInfo[] files = directoryInfo.GetFiles();
foreach (FileInfo fileInfo in files)
{
string fileName = fileInfo.ToString();
fileName = fileName.Split('_')[0]; // File Suffix
string destinationPrefix = "";
// LINQ HERE USING fileName variable:
//destinationPrefix = FROM t in Table where t.Column == fileName select destinationPrefixColumn
MessageBox.Show(destinationPrefix);
}
}
答案 0 :(得分:0)
姆兰,
您需要向我们提供有关Table对象的更多信息。没有代码可以将数据从数据库中获取到Table变量中。
var query = "Select * from SomeTable Where SomeCondition Order by Somefields";
var Table = conn.ExecuteQuery(query);
这将为您提供一个表,您可以在fileinfo循环中扫描。由于您没有告诉我们扩展名要查看哪些字段,或者您对源文件夹和目标文件夹执行了哪些操作。我不能再提供代码了。另外,看一下fileinfo对象中的一些可能有用的东西......
fileInfo.FileName //Name of file
fileInfo.FullName // full path and name of file
fileInfo.Extension // just the extension
fileInfo.MoveTo() // will move file to new location
fileInfo.CopyTo() // will copy file to new location
回复并澄清您的问题以获得更多帮助。