在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
答案 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]
列的方法!