none
import de fichier plat dans une table temporaire RRS feed

  • Question

  • Bonjour,

    Je cherche à importer un fichier plat dans une table temporaire.

    Structure de mon fichier plat :
    - séparateur de colonne : ","
    - la première ligne contient les noms de colonnes
    - le nombre et le nom des colonnes peut varier

    Je souhaite importer ce fichier plat dans la table temporaire en construisant dynamiquement la table temporaire sur la structure du fichier.
    Je m'explique, je souhaite que la table temporaire ait le nombre de colonnes du fichier et le nom des colonnes qui vont bien.

    Une autre piste pouvant répondre à mon problème :
    Il se trouve que par ailleurs dans ma base j'ai une table qui contient forcement toutes les colonnes de mon fichier plat (les colonnes du fichier plat sont un sous ensemble des colonnes de cette table). Je crée alors ma table temporaire en copiant la structure de cette table (select * into #TEMP where 1=2). Mon problème est alors ramené à importer les colonnes du fichier plat dans les bonnes colonnes de la table temporaire en fesant correspondre les nom de colonnes.

    Pour info, je suis sous SQL Server 2000.

    Merci d'avance pour votre aide ! 
    jeudi 18 janvier 2007 10:17

Réponses

  • Bon je crois que je tiens une piste.

    En fait je vais lire la première ligne de mon fichier plat, la stocker dans une variable (@Colonnes).

    Puis je construit dynamiquement une requete SQL comme suit :
    Code :
    SELECT @Colonnes INTO #TEMP FROM [Ma TABLE] WHERE 1=2

    Comme ça je construit une table temporaire avec les bonnes colonnes, dans le bon ordre et avec le bon typage !
    jeudi 18 janvier 2007 11:11

Toutes les réponses

  • Bon je crois que je tiens une piste.

    En fait je vais lire la première ligne de mon fichier plat, la stocker dans une variable (@Colonnes).

    Puis je construit dynamiquement une requete SQL comme suit :
    Code :
    SELECT @Colonnes INTO #TEMP FROM [Ma TABLE] WHERE 1=2

    Comme ça je construit une table temporaire avec les bonnes colonnes, dans le bon ordre et avec le bon typage !
    jeudi 18 janvier 2007 11:11
  • Bonjour,

    Je vous dirais avec OPENROWSET BULK, nouveau sous SQL Server 2005 :


    SELECT *
    INTO #X
    FROM  OPENROWSET(BULK  'C:\myTestFormatFiles-c.Dat',
    FORMATFILE='C:\myTestFormatFiles.Xml'     
    ) as t1 ;

    Où 'C:\myTestFormatFiles-c.Dat' est le fichier à importer, et 'C:\myTestFormatFiles.Xml' le fichier de format (en xml).

    Cordialement

     

    jeudi 18 janvier 2007 13:49
    Modérateur
  • sous acesss la synthaxe est la suivante

    SELECT * From [Text;Hdr=yes;Fmt=Delimited;Database=Path].NomFichier

    tu peux l'importer sous Access .


    vendredi 2 août 2013 00:48