2010-08-11 14 views
1

Je fais un insert en vrac à partir d'un fichier texte à largeur fixe à l'aideInsertion en bloc de SQL Server à partir d'un fichier à largeur fixe - Comment puis-je obtenir des valeurs NULL pour les chaînes?

INSERT INTO blah 
SELECT blah1, blah2 
    FROM OPENROWSET(BULK 'filename.txt', FORMATFILE='format.xml'); 

Il fonctionne très bien, sauf que je veux NULLs pour le vide (tous les espaces) champs dans le fichier. Ce n'est pas un problème pour les champs marqués dans le fichier de format comme SQLINT, SQLDATETIME, etc., mais les types SQLNVARCHAR viennent juste comme des chaînes vides.

Je suppose que cela a du sens, mais comment l'obtenir pour importer des valeurs NULL à la place?

+0

Je me demande si vous utilisez select * au lieu de sélection blah1, blah2 ferait une différence comme dans [ce poste] (http://www.bigresource.com/MS_SQL -OPENROWSET-default-null-issue-5ADedQ2N.html) –

Répondre

0

J'importe toujours vers une table de transfert et effectue le nettoyage nécessaire puis l'insertion dans les tables de production.

+0

Vrai ... Je suppose que mes questions sont, "Est-ce nettoyage nécessaire, ou pourrais-je l'avoir importé comme je le veux en premier lieu?" – Clyde

0

Utilisez une instruction CASE

SELECT CASE 
      WHEN RTRIM(blah2) = '' THEN NULL 
            ELSE blah2 
     END