首页 > 解决方案 > 使用 BCP 插入固定值

问题描述

我正在尝试使用 bcp 导入 TXT 文件。

我的TXT文件是这样的:

abc|cba
xyz|zyx

我的表是这样的:

Field_1 -> Identity field
Field_2 -> Varchar(3)
Field_3 -> Varchar(3)
Filed_4 -> Varchar(1) In this case I must set with default value 'P'
Filed_5 -> Varchar(1) In this case I must set with default value 'C'

我的值表必须是:

1,abc,cba,P,C
2,xyz,zyx,P,C

注意-> 我的 TXT 文件很大(大约 200GB),我不能导入另一个表然后将所有值传递给这个表(只是说)。

@@版本-> SQL Server 2014 (SP2)

标签: sql-serverbcp

解决方案


您不能通过 BCP 生成数据,正如 Jeroen 所说,您必须依赖 SQL Server 来执行此操作。要添加到他的评论中,标识值不是默认值,您应该继续使用列的标识属性。

对于两者(身份和默认),您必须使用 BCP 的 -f 选项。此选项包含格式文件,以指示 BCP 实用程序查看和处理格式文件中所述的数据。

使用格式文件,您可以指定文件中的哪些列映射到目标表中的哪些列。要排除一列,只需将其目标值设置为“0”。

格式文件和 bcp 实用程序本身就是更大的主题,但要回答您的问题;是的,这是可能的,并且使用具有修改后的目标值(设置为“0”)的格式文件是这样做的方法。

这样做,您可以处理一次数据。使用 powershell 附加数据是可能的,但不必要且效率较低。要使用 bcp 在一个操作中执行此操作,您需要使用格式文件。


推荐阅读