- 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