SQL Server - 插入默认值bcp

时间:2015-08-18 10:15:29

标签: sql-server identity bcp

在SQL Server中,如何在使用bcp命令时插入默认值?

方案来自下表,在运行bcp命令时,列'sno'是标识列,其中值应自动递增1,values列的数据应来自数据文件和值date列应自动更新为今天的日期,状态列的值应更新为Flag1

对于正常使用,我知道如何创建bcp格式文件。对于上面的场景,我如何创建格式文件并将数据插入table1?

表格式:

CREATE TABLE [dbo].[table1] 
(
    SNo int IDENTITY(1,1) NOT NULL,
    values  varchar(13) NOT NULL,
    date    datetime NOT NULL,
    status  varchar(50)
)

Table1

sno  |  values  |    date    |  status
-----+----------+------------+--------
1    |  111111  | 2015-08-17 |  Flag1
2    |  222222  | 2015-08-17 |  Flag1

1 个答案:

答案 0 :(得分:1)

基本上,您只需将0作为主机列号,以避免bcp插入列。

假设您的[date]列有默认约束:

ALTER TABLE dbo.table1
ADD CONSTRAINT DF_Table1_Date DEFAULT(SYSDATETIME()) FOR [Date]

以某种方式你也设置了一些计算[status]的方法 - 然后你可以使用这个格式文件:

12.0
4
1    SQLCHAR         0    12   ";"      0    SNo        ""
2    SQLCHAR         0    13   ";"      2    values     SQL_Latin1_General_CP1_CI_AS
3    SQLDATETIME     0    24   ";"      0    date       ""
4    SQLCHAR         0    50   "\r\n"   0    status     SQL_Latin1_General_CP1_CI_AS

因此您实际上只会导入[values]列 - SNo由SQL Server(标识列)自动设置,[date]列自动设置为当前日期和放大器;时间通过默认约束 - 现在你必须找到一种在插入时或之后填写[status]列的方法!