【发布时间】:2015-06-27 15:51:58
【问题描述】:
我想要一些关于执行此操作的最佳方法的建议。我有多个具有不同布局的文件,我想创建一个过程将它们导入到 sql 中的新表中。
我编写了一个程序,它使用 xp_cmdshell 来获取文件夹中的文件名列表,并使用光标循环这些文件名并使用批量插入将它们放入 sql 但我不知道最好的方法每次创建一个具有新布局的新表。
我想如果我可以只将列行导入到临时表中,那么我可以使用它来创建一个新表来进行批量插入。但我无法让它工作。
那么使用 SQL 执行此操作的最佳方法是什么?我对.net 也不是很熟悉。我曾考虑在 SSIS 中执行此操作,我知道在 SSIS 中加载多个具有相同布局的文件很容易,但可以使用可变布局吗?
谢谢
【问题讨论】:
-
我很确定没有简单的方法可以做到这一点,您不仅需要列名、列数,还需要知道每列的数据类型,这在bcp 文件。如果每个 bcp 文件都有一个格式文件,那么您可能会解析该格式文件,但这将是一项巨大的工作。不过,我会更好奇你为什么需要这样做。
-
看过SQL Server Management Objects (SMO)?正如@Greg 指出的那样,您需要弄清楚列名、计数和数据类型。如果可以做到这一点,那么 SMO 将允许您在 .Net 代码中创建表。附带说明一下,有一个扩展的存储过程 (xp_dirtree),它将列出文件。 DBA 有充分的理由不愿意启用 xp_cmdshell。
标签: sql-server tsql csv ssis