IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Insertion table ne se fait pas correctement


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Par défaut Insertion table ne se fait pas correctement
    Bonjour,

    J'ai écris un code qui permet de traiter des fichiers ( c'est à dire récupérer le contenu ) et l'intégrer tout d'abord dans un table temporaire avec une seul colonne puis dans une table réel en insérant les données à laide de SUBSTRING.

    Cependant mon insertion ne se fait pas correctement car les noms de fichiers sont tous les mêmes, alors que normalement il devrait y avoir 3 fichiers.

    Soit le premier : REP0118 avec comme valeur 203649 et 203256
    le deuxieme : REP9971 avec 2020250 et 203905
    et le dernier avec comme valeur 203578

    or j'ai partout le nom de fichier REP9973..

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    DECLARE @TespSP bit = 1
     
     
    	DECLARE @SourceFolder nvarchar(128)
    	DECLARE @DestinationFolder nvarchar(128)
    	DECLARE @SourceFile nvarchar(128)
    	DECLARE @BULK nvarchar(max)
    	DECLARE @fileExist int
    	DECLARE @MasqueNomFichier nvarchar(249)
    	DECLARE @FichierCheminComplet nvarchar(249)
    	DECLARE @LigneFichier nvarchar(max)
    	DECLARE @CaractereFinLigne nvarchar(249)
    	DECLARE @CMD varchar(500)
     
    	DECLARE @NomFICHIER nvarchar(255)
    	DECLARE @NumCEGID nvarchar(55)
    	DECLARE @DateStatut datetime	
    	DECLARE @Code  nvarchar(55)
    	DECLARE @EnvoiEmail_id  nvarchar(max)
    	DECLARE @DateCree datetime
    	DECLARE @DateModif datetime
    		DECLARE @Jour datetime
    		DECLARE @Annee datetime
    		DECLARE @Mois Datetime	
     
    	SET @SourceFolder = 'D:\DataFlow\Heppner\In\'
    	SET @DestinationFolder = 'D:\DataFlow\Heppner\done\'
     
     
    	/**********************************************************************************/
    	/*************** 1) CREATION DES TABLES TEMPORAIRES ***************/
    	/**********************************************************************************/
     
    	/***Creation de la table temporaire #ListeFiles listant les fichiers a integrer***/
    	IF  EXISTS (SELECT * FROM tempdb.sys.objects WHERE [Name] like '#ListeFiles%' AND type in (N'U')) DROP TABLE #ListeFiles
    	CREATE TABLE #ListeFiles (FichierCheminComplet nvarchar(249),NomFichier nvarchar(249))
     
    		IF  EXISTS (SELECT * FROM tempdb.sys.objects WHERE [Name] like '#ImportHeppner%' AND type in (N'U')) DROP TABLE #ImportHeppner
    		CREATE TABLE  #ImportHeppner ([Ligne] [nvarchar](max))
    	/**********************************************************************************/
    	/*************** 2) RECUPERATION DE LA LISTE DES FICHIERS HEPPNER A TRAITER ***************/
    	/**********************************************************************************/
     
    		SET @MasqueNomFichier = 'REP%'
     
    	/**Creation d'une table temporaire #DirectoryTree qui va contenir la liste de tous les fichiers qui se trouve dans un dossier**/
    		IF  EXISTS (SELECT * FROM tempdb.sys.objects WHERE [Name] like '#DirectoryTree%' AND type in (N'U')) DROP TABLE #DirectoryTree	
    		CREATE TABLE #DirectoryTree ( id int IDENTITY(1,1), SubDirectory nvarchar(249),Depth int,IsFile bit) 
     
    	/**Injection dans #DirectoryTree avec la liste des fichiers se trouvant dans le dossier contenant la copie des fichier Heppner pour le fichier courant**/
    		INSERT INTO #DirectoryTree (SubDirectory, Depth, IsFile) EXEC master.sys.xp_dirtree @SourceFolder,1,1
     
    		/**Boucle permettant de récupérer uniquement les fichiers se trouvant au niveau du dossier courant (pas les sous dossiers) et dont le nom ressemble au masque adapté à la situation**/
    		DECLARE CSUBLISTEFICHIER CURSOR
    		READ_ONLY FORWARD_ONLY
    		FOR 
    		SELECT SubDirectory FROM #DirectoryTree WHERE SubDirectory like @MasqueNomFichier AND IsFile = 1 AND Depth = 1
    		OPEN CSUBLISTEFICHIER
    		FETCH NEXT FROM CSUBLISTEFICHIER INTO @NomFichier
    		WHILE @@FETCH_STATUS = 0
    		BEGIN
    			IF (RIGHT(@SourceFolder,1) = '\') SET @FichierCheminComplet = @SourceFolder + @NomFichier
    			INSERT INTO #ListeFiles VALUES (@FichierCheminComplet, @NomFICHIER)
    			FETCH NEXT FROM CSUBLISTEFICHIER INTO @NomFichier
    --			select * from #ListeFiles
    		END
    		CLOSE CSUBLISTEFICHIER
    		DEALLOCATE CSUBLISTEFICHIER	
     
    		/**Fin Boucle**/
    	/**********************************************************/
    	/*************** 3) TRAITEMENT DES FICHIERS ***************/
    	/**********************************************************/
     
    DECLARE CLISTEFICHIER CURSOR
    		LOCAL STATIC READ_ONLY FORWARD_ONLY
     
    	FOR 
    	SELECT FichierCheminComplet, NomFichier FROM #ListeFiles
    	OPEN CLISTEFICHIER
    	FETCH NEXT FROM CLISTEFICHIER INTO @FichierCheminComplet, @NomFICHIER
    	WHILE @@FETCH_STATUS = 0
    	BEGIN
    		IF @TespSP =1 select 'new'
     
    		/***Creation de la table temporaire #ImportHeppner listant les données a envoyer vers la table tblHeppner***/
    	--	select * from #ImportHeppner
    			BEGIN
     
    			SET @BULK = 'BULK '
    			SET @BULK += 'INSERT #ImportHeppner '
    			SET @BULK += 'FROM ''' + @FichierCheminComplet +''' '
    			SET @BULK += 'WITH ( '
    			SET @BULK += '	FIRSTROW = 1, '
    			SET @BULK += '	ROWTERMINATOR = ''0x0a'', '
    			SET @BULK += '	CODEPAGE = ''ACP'' '
    			SET @BULK += ')'
     
    			EXEC (@BULK)
     
    	--		INSERT INTO #ImportHeppner(NomFichier) Values(@NomFICHIER)
    	--		UPDATE dlHeppnerFiles SET NomFichier= SUBSTRING(@FichierCheminComplet,23,37) WHERE NomFICHIER IS NULL
    			print @NomFICHIER
     
    	--	SET @CMD = 'move "' + @FichierCheminComplet + '" "' + @DestinationFolder + '"';
    	--	EXEC xp_cmdshell @CMD
     
    		end
    				FETCH NEXT FROM CLISTEFICHIER INTO @FichierCheminComplet, @NomFICHIER
    		END
    		CLOSE CLISTEFICHIER
    		DEALLOCATE CLISTEFICHIER
     
    		DECLARE MY_CURSOR CURSOR
    			LOCAL STATIC READ_ONLY FORWARD_ONLY
     
    		FOR 
     
    --		CREATE INDEX Code_Heppner ON  [Pivot].[dbo].[dlCodeHeppner]([SIT],[JUS])
    		SELECT [ligne] FROM #ImportHeppner 
     
     
    		OPEN MY_CURSOR
    		FETCH NEXT FROM MY_CURSOR INTO @LigneFichier
    		WHILE @@FETCH_STATUS = 0
    		BEGIN
    			IF( SELECT COUNT(*) FROM [Pivot].[dbo].[dlHeppnerFiles] WHERE NomFICHIER = @LigneFichier and NumCEGID is NULL ) =0
     
    				BEGIN
    					INSERT INTO Pivot.dbo.dlHeppnerFiles 
    					SELECT DISTINCT @NomFICHIER
    							,SUBSTRING(ligne,1,6) AS NumCEGID
    							,convert (datetime2, stuff(stuff(SUBSTRING(Ligne,38,6), 5, 0, '/'), 3, 0, '/'), 3) AS DateStatut								
    							,SUBSTRING(ligne,44,3) AS SIT
    							,SUBSTRING(ligne,47,3) AS JUS
    							, Libelle_fr
    							,GETDATE()
    							,DateModif=NULL
    							,DateTrsCRM=NULL
    					FROM #ImportHeppner
    					inner JOIN [Pivot].[dbo].[dlCodeHeppner] as CH on SUBSTRING(#ImportHeppner.Ligne,44,3)=CH.SIT AND SUBSTRING(#ImportHeppner.Ligne,47,3)=CH.JUS
    					WHERE @LigneFichier = Ligne AND SUBSTRING(ligne,1,6) LIKE '2%' OR SUBSTRING(ligne,1,6) LIKE '1%' 
     
     
    					END
     
    			--	truncate table dlHeppnerFiles
    			--		select * from dlHeppnerFiles
     
     
    				FETCH NEXT FROM MY_CURSOR INTO @LigneFichier 
    			END
    		CLOSE MY_CURSOR
    		DEALLOCATE MY_CURSOR
    et voici le résultat :

    Nom : Capture.JPG
Affichages : 145
Taille : 62,9 Ko


    Merci ..

  2. #2
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Par défaut Portée des variables
    Bonjour,

    La variable @NomFICHIER est renseignée dans ton curseur CLISTEFICHIER
    A la sortie de ce curseur, elle contient donc la dernière valeur de ta requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT FichierCheminComplet, NomFichier FROM #ListeFiles
    Dans ton curseur suivant "MY_CURSOR", tu insère dont toujours la même valeur de @NomFICHIER.

    Remarque : tu fais un usage intensif des curseurs.
    En développement SQL je l'évite chaque fois que c'est possible.
    Le résultat est souvent moins verbeux et plus efficace en terme de performances.
    Dans ton code, tu dois bien pouvoir remplacer quelques curseurs pars des structure du type
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Insert into Table1 (Champ1, Champ2,ChampN)
    Select ChampX1 as Champ1, ChampX2 as Champ2, ChampX3 as Champ3
    From Table2
    Where (clause_where)

    Daniel

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Par défaut
    Bonjour,

    Merci pour votre retour, je prends concernant les curseurs..

    Cependant je ne vois toujours pas comment procéder dans ce cas ..

    Merci

  4. #4
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Par défaut
    Je n'ai pas étudié votre code dans le détail.
    Mais a priori, le code du curseur MY_CURSOR devrait être inclus dans la boucle du curseur CLISTEFICHIER
    Ainsi, le code de MY_CURSOR serait exécuté pour chaque valeur de @NomFICHIER.

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Par défaut
    Bonjour,

    merci de votre retour, en effectuant ce changement j'ai bien les deux autres noms de fichiers.. mais qui se doublonnent ..


    Nom : Capture.JPG
Affichages : 130
Taille : 59,2 Ko


    Savez-vous pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    DECLARE @TespSP bit = 1
     
     
    	DECLARE @SourceFolder nvarchar(128)
    	DECLARE @DestinationFolder nvarchar(128)
    	DECLARE @SourceFile nvarchar(128)
    	DECLARE @BULK nvarchar(max)
    	DECLARE @fileExist int
    	DECLARE @MasqueNomFichier nvarchar(249)
    	DECLARE @FichierCheminComplet nvarchar(249)
    	DECLARE @LigneFichier nvarchar(max)
    	DECLARE @CaractereFinLigne nvarchar(249)
    	DECLARE @CMD varchar(500)
     
    	DECLARE @NomFICHIER nvarchar(255)
    	DECLARE @NumCEGID nvarchar(55)
    	DECLARE @DateStatut datetime	
    	DECLARE @Code  nvarchar(55)
    	DECLARE @EnvoiEmail_id  nvarchar(max)
    	DECLARE @DateCree datetime
    	DECLARE @DateModif datetime
    		DECLARE @Jour datetime
    		DECLARE @Annee datetime
    		DECLARE @Mois Datetime	
     
    	SET @SourceFolder = 'D:\DataFlow\Heppner\In\'
    	SET @DestinationFolder = 'D:\DataFlow\Heppner\done\'
     
     
    	/**********************************************************************************/
    	/*************** 1) CREATION DES TABLES TEMPORAIRES ***************/
    	/**********************************************************************************/
     
    	/***Creation de la table temporaire #ListeFiles listant les fichiers a integrer***/
    	IF  EXISTS (SELECT * FROM tempdb.sys.objects WHERE [Name] like '#ListeFiles%' AND type in (N'U')) DROP TABLE #ListeFiles
    	CREATE TABLE #ListeFiles (FichierCheminComplet nvarchar(249),NomFichier nvarchar(249))
     
    		IF  EXISTS (SELECT * FROM tempdb.sys.objects WHERE [Name] like '#ImportHeppner%' AND type in (N'U')) DROP TABLE #ImportHeppner
    		CREATE TABLE  #ImportHeppner ([Ligne] [nvarchar](max))
    	/**********************************************************************************/
    	/*************** 2) RECUPERATION DE LA LISTE DES FICHIERS HEPPNER A TRAITER ***************/
    	/**********************************************************************************/
     
    		SET @MasqueNomFichier = 'REP%'
     
    	/**Creation d'une table temporaire #DirectoryTree qui va contenir la liste de tous les fichiers qui se trouve dans un dossier**/
    		IF  EXISTS (SELECT * FROM tempdb.sys.objects WHERE [Name] like '#DirectoryTree%' AND type in (N'U')) DROP TABLE #DirectoryTree	
    		CREATE TABLE #DirectoryTree ( id int IDENTITY(1,1), SubDirectory nvarchar(249),Depth int,IsFile bit) 
     
    	/**Injection dans #DirectoryTree avec la liste des fichiers se trouvant dans le dossier contenant la copie des fichier Heppner pour le fichier courant**/
    		INSERT INTO #DirectoryTree (SubDirectory, Depth, IsFile) EXEC master.sys.xp_dirtree @SourceFolder,1,1
     
    		/**Boucle permettant de récupérer uniquement les fichiers se trouvant au niveau du dossier courant (pas les sous dossiers) et dont le nom ressemble au masque adapté à la situation**/
    		DECLARE CSUBLISTEFICHIER CURSOR
    		READ_ONLY FORWARD_ONLY
    		FOR 
    		SELECT SubDirectory FROM #DirectoryTree WHERE SubDirectory like @MasqueNomFichier AND IsFile = 1 AND Depth = 1
    		OPEN CSUBLISTEFICHIER
    		FETCH NEXT FROM CSUBLISTEFICHIER INTO @NomFichier
    		WHILE @@FETCH_STATUS = 0
    		BEGIN
    			IF (RIGHT(@SourceFolder,1) = '\') SET @FichierCheminComplet = @SourceFolder + @NomFichier
    			INSERT INTO #ListeFiles VALUES (@FichierCheminComplet, @NomFICHIER)
    			FETCH NEXT FROM CSUBLISTEFICHIER INTO @NomFichier
    --			select * from #ListeFiles
    		END
    		CLOSE CSUBLISTEFICHIER
    		DEALLOCATE CSUBLISTEFICHIER	
     
    		/**Fin Boucle**/
    	/**********************************************************/
    	/*************** 3) TRAITEMENT DES FICHIERS ***************/
    	/**********************************************************/
     
    DECLARE CLISTEFICHIER CURSOR
    		LOCAL STATIC READ_ONLY FORWARD_ONLY
     
    	FOR 
    	SELECT DISTINCT FichierCheminComplet, NomFichier FROM #ListeFiles
    	OPEN CLISTEFICHIER
    	FETCH NEXT FROM CLISTEFICHIER INTO @FichierCheminComplet, @NomFICHIER
    	WHILE @@FETCH_STATUS = 0
    	BEGIN
    		IF @TespSP =1 select 'new'
     
    		/***Creation de la table temporaire #ImportHeppner listant les données a envoyer vers la table tblHeppner***/
    	--	select * from #ImportHeppner
    			BEGIN
     
    			SET @BULK = 'BULK '
    			SET @BULK += 'INSERT #ImportHeppner '
    			SET @BULK += 'FROM ''' + @FichierCheminComplet +''' '
    			SET @BULK += 'WITH ( '
    			SET @BULK += '	FIRSTROW = 1, '
    			SET @BULK += '	ROWTERMINATOR = ''0x0a'', '
    			SET @BULK += '	CODEPAGE = ''ACP'' '
    			SET @BULK += ')'
     
    			EXEC (@BULK)
     
    	--		INSERT INTO #ImportHeppner(NomFichier) Values(@NomFICHIER)
    	--		UPDATE dlHeppnerFiles SET NomFichier= SUBSTRING(@FichierCheminComplet,23,37) WHERE NomFICHIER IS NULL
    			print @NomFICHIER
     
    	--	SET @CMD = 'move "' + @FichierCheminComplet + '" "' + @DestinationFolder + '"';
    	--	EXEC xp_cmdshell @CMD
    			DECLARE MY_CURSOR CURSOR
    			LOCAL STATIC READ_ONLY FORWARD_ONLY
     
    		FOR 
     
    --		CREATE INDEX Code_Heppner ON  [Pivot].[dbo].[dlCodeHeppner]([SIT],[JUS])
    		SELECT [ligne] FROM #ImportHeppner 
     
     
    		OPEN MY_CURSOR
    		FETCH NEXT FROM MY_CURSOR INTO @LigneFichier
    		WHILE @@FETCH_STATUS = 0
    		BEGIN
    			IF( SELECT COUNT(*) FROM [Pivot].[dbo].[dlHeppnerFiles] WHERE NomFICHIER = @LigneFichier and NumCEGID is NULL ) =0
     
    				BEGIN
    					INSERT INTO Pivot.dbo.dlHeppnerFiles 
    					SELECT DISTINCT @NomFICHIER
    							,SUBSTRING(ligne,1,6) AS NumCEGID
    							,convert (datetime2, stuff(stuff(SUBSTRING(Ligne,38,6), 5, 0, '/'), 3, 0, '/'), 3) AS DateStatut								
    							,SUBSTRING(ligne,44,3) AS SIT
    							,SUBSTRING(ligne,47,3) AS JUS
    							, Libelle_fr
    							,GETDATE()
    							,DateModif=NULL
    							,DateTrsCRM=NULL
    					FROM #ImportHeppner
    					inner JOIN [Pivot].[dbo].[dlCodeHeppner] as CH on SUBSTRING(#ImportHeppner.Ligne,44,3)=CH.SIT AND SUBSTRING(#ImportHeppner.Ligne,47,3)=CH.JUS
    					WHERE @LigneFichier = Ligne AND SUBSTRING(ligne,1,6) LIKE '2%' OR SUBSTRING(ligne,1,6) LIKE '1%' 
     
     
    					END
     
    			--	truncate table dlHeppnerFiles
    			--		select * from dlHeppnerFiles
     
     
    				FETCH NEXT FROM MY_CURSOR INTO @LigneFichier 
    			END
    		CLOSE MY_CURSOR
    		DEALLOCATE MY_CURSOR
     
    		end
    				FETCH NEXT FROM CLISTEFICHIER INTO @FichierCheminComplet, @NomFICHIER
    		END
    		CLOSE CLISTEFICHIER
    		DEALLOCATE CLISTEFICHIER
     
    END

  6. #6
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Par défaut
    Bonjour,

    Ce qui manque a priori, c'est de savoir dans le fichier #ImportHeppner à quel fichier se rattachent les lignes.
    Vous pouvez modifier la table en ajoutant le nom du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE #ImportHeppner (NomFichier nvarchar(255), [Ligne] [nvarchar](max))
    Vous modifiez l'insert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    SET @BULK = 'BULK '
    SET @BULK += 'INSERT #ImportHeppner (Ligne)'
    SET @BULK += 'FROM ''' + @FichierCheminComplet + ''' '
    SET @BULK += 'WITH ( '
    SET @BULK += '	FIRSTROW = 1, '
    SET @BULK += '	ROWTERMINATOR = ''0x0a'', '
    SET @BULK += '	CODEPAGE = ''ACP'' '
    SET @BULK += ')'
     
    EXEC (@BULK)
     
    Update #ImportHeppner
    Set NomFichier = @NomFICHIER
    Where NomFichier Is Null
    Dans le code qui suit, vous pouvez filtrer les lignes pour ne traiter que celle correspondant à @NomFichier.

    En espérant que ca vous aide.

    Bonnes fêtes

    Daniel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture du fichier XML ne se fait pas correctement
    Par Zebulon777 dans le forum jQuery
    Réponses: 3
    Dernier message: 01/03/2018, 12h58
  2. [WM18] Addition qui ne se fait pas correctement.
    Par vinoc dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 06/03/2015, 19h23
  3. [MySQL] INSERT qui ne se fait pas
    Par Ar-Star dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/01/2015, 20h12
  4. Réponses: 8
    Dernier message: 30/09/2009, 09h21
  5. [XL-2007] le tri ne se fait pas correctement en VBA
    Par beegees dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/04/2009, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo