如何将多个csv文件从一个文件夹导入到sql中,并导入到他们自己的独立表中

时间:2015-06-27 15:51:58

标签: sql-server tsql csv ssis

我想就这方面的最佳方式提出一些建议。我有多个文件都有不同的布局,我想创建一个过程将它们导入到sql中的新表。

我编写了一个程序,它使用xp_cmdshell获取文件夹中的文件名列表,并使用游标循环遍历这些文件名并使用批量插入将它们导入sql但我不知道最好的方法每次都创建一个包含新布局的新表。

我想如果我只能将列行导入临时表,那么我可以使用它创建一个新表来进行批量插入。但我无法让它发挥作用。

那么使用SQL做到这一点的最佳方法是什么?我也不熟悉.net。我已经考虑过在SSIS中这样做,我知道它很容易加载多个文件,这些文件在SSIS中具有相同的布局,但它可以用变量布局吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用BimlScript使整个过程自动化,只需将其指向感兴趣的路径,并为您编写所有SSIS和T-SQL DDL,但是为编写C#所涉及的工作量而言你需要的,你也可以把数据转储放到C#中的SQL Server中。

但是,您可以使用SSIS解决此问题,并且需要花费一些精力来挑选。

最简单的方法是使用SQL Server Import and Export Wizard从Excel电子表格创建SSIS包,这些包将把工作表转储到自己的表中。每次有想要导入的新电子表格时都必须运行此向导,但是您可以保存包,以便可以再次重新导入该电子表格。

下一个级别是编辑已保存的SSIS包(或从头开始编写)以参数化文件路径和目标表名称,然后您可以将该包重新用于遵循相同格式的任何电子表格。

进一步的做法是编写一个包含来自前一级别的包以进行调用的包。如果您可以有效地查询标题行,您可以编写一个SSIS包,该路径接受路径作为输入参数,找到该路径中的所有Excel工作表,查询标题行以确定电子表格格式,然后将该信息传递给该格式类型的参数化包。

SSIS开发当然是它自己的主题 - Integration Services Features and Tasks on MSDN是一个很好的起点。 SSIS有它的怪癖,如果你想进行大量的SSIS开发,我强烈建议学习BimlScript。如果您想更详细地讨论上述想法,请随时给我留言。