2011-08-22 7 views
1

J'essaie d'obtenir des données d'un fichier csv avec les données suivantes.MSSQL - Comment définir la valeur par défaut dans BULK INSERT?

Employee Name: Employee Id : Employee Type : Joining Date 
Henry : 00: 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 

Maintenant, je veux mettre

J'ai 2 fichier cvs et 2 format de fichier où 1 pour le type permanent et 1 pour le type de contrat. Maintenant, je veux définir la valeur dans la table lorsqu'aucune donnée n'est fournie. Pour un exemple, colonne "Type d'employé". Comment puis-je définir une valeur par défaut où, lorsque je cours l'employé permanent cvs le «Type d'employé = permanent» et quand je cours contrat cvs «Type d'employé = contrat».

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

Répondre

3

Utilisez OPENROWSET afin que vous puissiez par défaut le champ:

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

+0

Salut Brian, Merci pour la réponse. Cela m'aide beaucoup et a résolu la plupart des problèmes, mais il y a un autre problème. La dernière ligne de mon fichier plat contient le nombre de données dans un fichier plat et sa dynamique. Comment puis-je définir pour passer la dernière rangée.? Veuillez nous conseiller Merci. –

+0

Pas moyen que je sache. Vous pouvez essayer de faire un nombre (*) pour obtenir le nombre d'enregistrements, puis utiliser la clause top pour limiter les enregistrements importés. – brian

1

ALTERNATIVEMENT What @ Brian a suggéré, vous pouvez charger une table de mise en scène et ensuite utiliser t-sql pour transformer les données à la façon dont vous le voulez. Vous le feriez si vous deviez faire quelque chose de plus complexe qu'un fichier de format ne le permettrait. Vous pouvez également effectuer les transformations dans un package SSIS plutôt que d'utiliser l'insertion en bloc.