我正在尝试使用以下数据从csv文件中获取数据。
Employee Name: Employee Id : Employee Type : Joining Date
Henry : 000123 : Permanent : 01/01/2011
Mathew : 111524 : Contract : 05/04/2011
Steven : 002544 : Permanent : 07/12/2010
Sophia : 015474 : : 29/02/2011
Rooney : 111303 : : 11/11/2010
现在我要设置
我有2个cvs文件和2个格式文件,其中1表示永久类型,1表示合同类型。现在我想在没有提供数据时设置表中的值。例如,列“员工类型”。我如何设置一个默认值,当我运行永久员工cvs'员工类型=永久'时,当我运行合同cvs'员工类型=合同'时。
BULK INSERT Employee_Table
FROM 'C:\Employee.csv'
WITH (
FIELDTERMINATOR ='';'',
FIRSTROW = 2,
ROWTERMINATOR = ''\n''
)
答案 0 :(得分:5)
使用OPENROWSET以便您可以默认该字段:
INSERT [dbo].[Employee_Table]
([Employee Name], [Employee Id], [Employee Type], [Joining Date])
SELECT [Employee Name]
, [Employee Id]
, [Employee Type] = 'Permanent'
, [Joining Date]
FROM OPENROWSET (BULK 'C:\Employee.csv',FORMATFILE='C:\formatfile.xml') as BulkLoadFile
答案 1 :(得分:1)
或者对@Brian建议的内容,您可以加载到临时表,然后使用t-sql将数据转换为您想要的方式。如果你需要做一些比格式文件允许的更复杂的事情,你会这样做。您也可以在SSIS包中进行转换,而不是使用批量插入。