Accueil > > > SQL LECTURE IMPORT DE FICHIER TEXTE
SQL LECTURE IMPORT DE FICHIER TEXTE
Information sur la source
Description
Cette procédure permet le lire fichier texte comme un simple SELECT * sur une table. Pour faire simple j'ai mis tous les champs en Nvarchar(Max)
Source
- CREATE Procedure dbo.Read_File(@File VarChar(495),@Separator Char(1),@FirstLineColumn Bit)
- AS
- BEGIN
- Declare @Txt Nvarchar(max),@Req VarChar(max),@Res Nvarchar(Max)
-
- -------------------------------------
- --Lecture du fichier Texte avec Dos--
- -------------------------------------
- CREATE TABLE ##TB(Valeur nvarchar(Max))
- Set @Req='BULK INSERT ##TB FROM ''' + @File + ''' WITH(FIRSTROW= 1,LASTROW=1,ROWTERMINATOR = ''' + CHAR(10) + ''')'
- EXEC(@Req)
-
- ------------------------------------------
- --Création de la table temporaire ##Temp--
- ------------------------------------------
- SET @Txt=(SELECT TOP 1 Valeur FROM ##TB) + @Separator
- DROP TABLE ##TB
-
- IF @FirstLineColumn=0
- BEGIN
- DECLARE @Nb INT
- Set @Nb=0
- WHILE CHARINDEX(@Separator,@Txt)>0
- BEGIN
- SET @Res=ISNULL(@Res,'') + '[Column' + convert(Nvarchar,@NB) + '],'
-
- SET @Txt=SUBSTRING(@Txt,CHARINDEX(@Separator,@Txt)+1,LEN(@Txt)- CHARINDEX(@Separator,@Txt))
-
- SET @Nb=@Nb+1
- END
- SET @Res=LEFT(@Res,LEN(@Res)-1)+')'
- END
- ELSE
- BEGIN
- SET @Res='[' + REPLACE(@Txt,@Separator,'],[')
- SET @Res=LEFT(@Res,LEN(@Res)-2)+')'
- END
-
- SET @Req='CREATE TABLE ##Temp (' + REPLACE(@Res,']','] NVarChar(Max)')
-
- EXEC(@Req)
- ---------------------------------
- --Import de données dans ##Temp--
- ---------------------------------
- SET @REQ='BULK INSERT ##TEMP FROM ''' + @File + ''' WITH(FIELDTERMINATOR = ''' + @Separator + ''' , FIRSTROW= ' + CONVERT(NVARCHAR, CONVERT(INT,@FirstLineColumn)+ 1) +', ROWTERMINATOR = ''' + CHAR(10) + ''')'
-
- EXEC(@REQ)
-
- ------------------------------------
- --Lecture et suppression de ##Temp--
- ------------------------------------
- SELECT * FROM ##Temp
-
- DROP TABLE ##Temp
- END
CREATE Procedure dbo.Read_File(@File VarChar(495),@Separator Char(1),@FirstLineColumn Bit)
AS
BEGIN
Declare @Txt Nvarchar(max),@Req VarChar(max),@Res Nvarchar(Max)
-------------------------------------
--Lecture du fichier Texte avec Dos--
-------------------------------------
CREATE TABLE ##TB(Valeur nvarchar(Max))
Set @Req='BULK INSERT ##TB FROM ''' + @File + ''' WITH(FIRSTROW= 1,LASTROW=1,ROWTERMINATOR = ''' + CHAR(10) + ''')'
EXEC(@Req)
------------------------------------------
--Création de la table temporaire ##Temp--
------------------------------------------
SET @Txt=(SELECT TOP 1 Valeur FROM ##TB) + @Separator
DROP TABLE ##TB
IF @FirstLineColumn=0
BEGIN
DECLARE @Nb INT
Set @Nb=0
WHILE CHARINDEX(@Separator,@Txt)>0
BEGIN
SET @Res=ISNULL(@Res,'') + '[Column' + convert(Nvarchar,@NB) + '],'
SET @Txt=SUBSTRING(@Txt,CHARINDEX(@Separator,@Txt)+1,LEN(@Txt)- CHARINDEX(@Separator,@Txt))
SET @Nb=@Nb+1
END
SET @Res=LEFT(@Res,LEN(@Res)-1)+')'
END
ELSE
BEGIN
SET @Res='[' + REPLACE(@Txt,@Separator,'],[')
SET @Res=LEFT(@Res,LEN(@Res)-2)+')'
END
SET @Req='CREATE TABLE ##Temp (' + REPLACE(@Res,']','] NVarChar(Max)')
EXEC(@Req)
---------------------------------
--Import de données dans ##Temp--
---------------------------------
SET @REQ='BULK INSERT ##TEMP FROM ''' + @File + ''' WITH(FIELDTERMINATOR = ''' + @Separator + ''' , FIRSTROW= ' + CONVERT(NVARCHAR, CONVERT(INT,@FirstLineColumn)+ 1) +', ROWTERMINATOR = ''' + CHAR(10) + ''')'
EXEC(@REQ)
------------------------------------
--Lecture et suppression de ##Temp--
------------------------------------
SELECT * FROM ##Temp
DROP TABLE ##Temp
END
Conclusion
Bien pratique.
Historique
- 29 juillet 2008 12:54:47 :
- Au lieu d'utiliser xp_cmdshell
j'ai utiliser bulk plus performant
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Lecture fichier texte format personnel [ par bluedemon ]
Bonjour. Voila, je souhaiterai créer un job sous sql server qui permettrait de lire un fichier texte, dans un répertoire donné, ligne par ligne et d'e
Import fichier XML dans SQL SERVER 2000 [ par crn_c21 ]
Bonjour,Je débute en SQL et XMLJ'ai un fichier XMLJe voudrais l'importer dans SQLComment faire ?Merci
rediriger le résultat d'une requête SQL vers un fichier texte [ par gabiset ]
Bonjour,Je fais une requête SQL en ligne de commande DOS et j'aimerais que le résultat de ma requête soit enregistré dans un fichier texte car il est
Lire fichier texte dans procedure stockée [ par laurent57150 ]
Bonjour,Comme indiqué dans le sujet, je voudrais lire un fichier depuis une procedure afin de réaliser un ceratin nombre d'operation dessus et de l'in
Import fichier txt : accents [ par greglover ]
Bonjour, J'ai ajouté une fonctionnalité à mon programme java permettant de faire une backup de la bdd dans un fichier .sql Lorsque je teste l'import,
Import fichier CSV dans Oracle 9i sous Linux RHEL3 [ par Lucinda000 ]
Bonjour à tous,Voilà. J'aimerai importer des fichiers csv sous Oracle 9i qui a déjà une base de données.J'ai bien compris que je devais utiliser sqlld
Validation de fichier csv dans un DTS [ par samoht ]
Bonjour,J'ai un DTS sur sql2005 qui importe les données d'un fichier CSV stocké sur le lecteur D du serveur. Jusqu'ici, l'importation se passe correct
Import de données depuis un fichier Excel [ par BUZZ2K ]
Bonjour,Afin d'allimenter ma base de donnees (une seule table en fait), je dispose d'un fichiers excel contenant les informations voulues.J'aurai aime
problème d'importation de fichier texte sous access 2007 [ par bies ]
bonjour, je veux importer un fichier texte dans une table access 2007 et j'ai un petit souci. j'ai un champ date/heure dans ma table. et lorsque acces
Import de données SSIS [ par vbmaniac8 ]
Bonjour,Je dois créer un package SSIS d'import de données depuis un fichier CSV qui a un nom variable. En clair, je dois exécuter ce package chaque jo
|
Derniers Blogs
TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
PROCEDURE MYSQLPROCEDURE MYSQL par gearmat
Cliquez pour lire la suite par gearmat
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|