Sql server 使用BCP/批量导入导入不存在的行(SQL Server)
我正在尝试将文件加载到SQL Server数据库中。我熟悉使用批量导入和使用BCP生成格式文件来重新组织列。然而,我正在尝试做两件我以前从未尝试过的新事情 我得到了许多单独的CSV加载到数据库中,每个文件代表几年中的一天。我希望能够使用一个实用工具来加载它们,但是它们有不同数量的列(当然,它们是独立的文件!)。我曾考虑创建一个加载存储过程,并使用PowerShell对文件进行迭代,但即使这样,我也无法找到一种处理不同列数的好方法 这些列是一致的,只是多年来文件中添加了一些列。我希望能够导入具有较少列的文件,将不存在的列作为空值输入。BCP是否支持这一点 我不想知道每列是何时添加的,也不想为每组日期编写不同的存储过程/脚本(这是我唯一能想到的解决方案!)。有什么建议吗Sql server 使用BCP/批量导入导入不存在的行(SQL Server),sql-server,sql-server-2012,bulk-import,Sql Server,Sql Server 2012,Bulk Import,我正在尝试将文件加载到SQL Server数据库中。我熟悉使用批量导入和使用BCP生成格式文件来重新组织列。然而,我正在尝试做两件我以前从未尝试过的新事情 我得到了许多单独的CSV加载到数据库中,每个文件代表几年中的一天。我希望能够使用一个实用工具来加载它们,但是它们有不同数量的列(当然,它们是独立的文件!)。我曾考虑创建一个加载存储过程,并使用PowerShell对文件进行迭代,但即使这样,我也无法找到一种处理不同列数的好方法 这些列是一致的,只是多年来文件中添加了一些列。我希望能够导入具有较
谢谢 我能想到的处理这个问题的唯一方法是使用过程编码。您可以编写控制台应用程序,也可以编写带有脚本任务的SSIS包。无论哪种方式,您都需要在文件中循环,并在循环中检查内容以查看缺少哪些列,然后导入文件,为缺少的任何列提供一些硬编码值 BCP可以通过使用格式文件来处理缺少列的文件,但它不能动态地处理(不知道哪些列缺少)。对于后续人员- 我通过使用Powershell将所有文本文件连接到一个大文本文件中(因为我们只是将它们全部加载到一个DB表中),解决了这个难题。一旦我有一个文件要上传,我就在SSIS中为OLE-DB连接程序创建了一个平面文件,并使用它的数据转换和派生列任务将值转换为指定字段的必需值。SSIS是一种非常快速的方法,可以在打包后上传数据,在几秒钟内通过数百万行。如果您选择走这条路线,请考虑以下几点: 如果要上载大量文本文件,并选择将它们连接起来,请知道该文件可能会变得太大而无法直接读取。SSIS具有“data viewer”工具,可用于故障排除,这些工具将允许您查看文件内容,而不管其大小(因为您一次将读取1000行)。然而,很明显,这将严重降低您的速度,因此最好先测试您的脚本,然后使用SSIS包
祝你好运 嗯。我想我可以通过使用powershell的导入CSV来添加空白列和BCPs格式文件,将这些空白列作为空值。谢谢你的建议!