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
|
--========================================================
--Description : import de fichier .csv dans une table à l'aide de BULK INSERT
--Auteur : Etienne ZINZINDOHOUE
--Exemple :
EXEC proc_importBULK_CSV_to_Table N'E:\test.csv', N'maBase.dbo.testbulk'
--========================================================
CREATE PROCEDURE proc_importBULK_CSV_to_Table
@EmplacementFichier nvarchar(255), @BaseSchemaTableName nvarchar(255)
AS
BEGIN
SET NOCOUNT ON
-- Vérifier l'existence du fichier à importer
DECLARE @ErreurTable VARCHAR(255)
DECLARE @tb_directory_exists TABLE
(
file_exists bit
, file_is_a_directory bit
, parent_directory_exists bit
)
INSERT @tb_directory_exists
EXEC xp_fileexist @EmplacementFichier
IF EXISTS
(
SELECT file_exists
FROM @tb_directory_exists
WHERE file_exists = 0
)
BEGIN
RAISERROR('Le fichier "%s" n''existe pas. Vérifier d''abord l''existence du fichier que vous voulez importer.', 16, 1, @EmplacementFichier)
RETURN
END
-- Vérifier la présence de la table de destination
IF EXISTS
(
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_CATALOG +'.'+ TABLE_SCHEMA +'.'+TABLE_NAME = + @BaseSchemaTableName
HAVING COUNT(*) = 0
)
BEGIN
SET @ErreurTable = 'La table ' + @BaseSchemaTableName + ' n''existe pas !'
RAISERROR(@ErreurTable, 16, 1, @BaseSchemaTableName)
RETURN
END
DECLARE @bulk nvarchar(1024)
BEGIN
SET @bulk = N'BULK INSERT ' + @BaseSchemaTableName + ' FROM ' +''''+ @EmplacementFichier +''''+ ' WITH (FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'', FIRSTROW = 1)'
--PRINT @bulk
EXEC(@bulk)
END
END |
Partager