从多个CSV文件导入内容,并为CSV文件名添加列

时间:2014-09-23 20:16:30

标签: sql-server

问题在于:

我需要捕获文件名的一部分并将其加载到表中,同时将该文件的内容加载到CSV文件中。这些文件将存储在一个文件夹中,并包含多个文件。我不知道文件名是什么。所有文件都将使用相同的格式命名。

所以,这里是它的外观细分。

RDBMS:SQL Server 2008 R2
文件名格式:xx_xxxx_SERVERNAME1_date.csv
文件内容:Column1,Column2,Column3,Column4(使用分隔符 - 逗号)

我只需要捕获文件名的SERVERNAME部分以及该文件中的所有内容。

因此,表格/应该如下所示:
Server_Name Column1 Column2 Column3 Column4
SERVERNAME1 XXX XXX XXX XXX
SERVERNAME1 XXX XXX XXX XXX
SERVERNAME1 XXX XXX XXX XXX
SERVERNAME2 XXX XXX XXX XXX
SERVERNAME2 XXX XXX XXX XXX
SERVERNAME2 XXX XXX XXX XXX
SERVERNAME3 XXX XXX XXX XXX

第一列中的每个服务器名称都是从文件名的SERVERNAME部分派生而来的,而第1-4列是从文件中的内容派生的。它应遍历文件夹并重复,直到所有文件名和内容都已插入表中。

我不确定实现这一目标的最佳解决方案是什么。我有一个C#程序,我发现如果它只是捕获内容并加载到表中,那么效果很好。我也可以使用SSIS来阅读内容。

我的问题是捕获文件名数据,然后将其与该文件中的内容相关联。

1 个答案:

答案 0 :(得分:0)

我使用SSIS和Foreach循环容器并将文件名指定为变量来实现此目的。在Foreach循环容器中,您将拥有一个导入文件的数据流任务,并且您将在数据流任务中包含派生列转换。在派生列转换中,您可以创建新列并将文件名的变量作为表达式传递。然后,您可以将此新列用作源,并将文件内容和文件名导入表中。