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 / Exemple :
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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.