MSSQL - Как установить значение по умолчанию в BULK INSERT? - PullRequest
2 голосов
/ 22 августа 2011

Я пытаюсь получить данные из 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 для типа контракта. Теперь я хочу установить значение в таблице, когда данные не предоставлены. Например, столбец «Тип сотрудника». Как установить значение по умолчанию, когда при запуске постоянного сотрудника резюме «Тип сотрудника = постоянный» и при выполнении контракта резюме «Тип сотрудника = контракт».

BULK INSERT Employee_Table
    FROM 'C:\Employee.csv'  
    WITH (  
         FIELDTERMINATOR ='';'',  
         FIRSTROW = 2,
         ROWTERMINATOR = ''\n'' 
        )  

Ответы [ 2 ]

5 голосов
/ 22 августа 2011

Используйте 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

http://msdn.microsoft.com/en-us/library/ms190312.aspx

1 голос
/ 22 августа 2011

В качестве альтернативы тому, что предложил @Brian, вы можете загрузить промежуточную таблицу и затем использовать t-sql для преобразования данных так, как вам нужно.Вы бы сделали это, если вам нужно сделать что-то более сложное, чем это позволяет форматный файл.Вы также можете выполнять преобразования в пакете служб SSIS вместо групповой вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...