Bonjour,
Je cherche à importer un fichier excel par une procédure stockée (projet ADP et sql server 2005). Pouvez vous me donner un exemple ou me lancer sur un tuto.
Merci
Bonjour,
Je cherche à importer un fichier excel par une procédure stockée (projet ADP et sql server 2005). Pouvez vous me donner un exemple ou me lancer sur un tuto.
Merci
Bonjour,
S'il s'agit d'un import ponctuel, vous pouvez faire cela à l'aide de l'assistant importation de données que vous trouverez dans SQL Server Management Studio :
- Faites un clic droit sur la base de données dans laquelle vous devez réaliser l'import
- choisissez "Toutes les tâches" ou "Tâches"
- choisissez "Importer des données"
- laissez vous guider par l'assistant
S'il s'agit en revanche d'un traitement à effectuer régulièrement, il sera préférable de passer par un package d'intégration, comme vous en fait la démonstration Fleur-Anne Blain ici
@++![]()
Merci pour votre réponse.
Oui pour moi, il s'agit d'un traitement à effectuer régulièrement (je le propose aux clients).
J'ai une autre question dans le même contexte.
Est ce qu'on peut passer par une procédure stockée? vu que je cherche à ce que le client puisse définir le chemin du fichier à importer. Je suis plus familiarisé avec ça qu'avec l'usage du SSIS (la procédure stockée sera executer via un module VBA).
Est ce que le notion opendatasource ne peut pas s'appliquer dans ce genre de problème? si c'est oui pouvez vous m'orienter vers un tuto du même genre.
Merci
Vous pouvez effectivement créer une procédure qui utilisera la commande BULK INSERT, mais vous devrez la combiner avec du code SQL dynamique.
Vous pouvez aussi utiliser la commande OPENROWSET, mais là encore vous devrez a combiner avec du code SQL dynamique.
OK si vous êtes pressé, sinon c'est dommage de ne pas s'y mettreJe suis plus familiarisé avec ça qu'avec l'usage du SSIS
@++![]()
Bonjour,
Je cherche à importer dans une procédure stockée texte (sql server 2005), un fichier excel mais avec un "data source" variable. J'ai fait la tentative suivante:
Mais ça ne marche pas, l'erreur qui s'affiche est "Erreur ADO: Synthaxe incorrect vers '+'. Pouvez vous m'aider à résoudre ce problème ou me guider vers un tuto qui traite de cette question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Alter procedure... ( @path varchar(100) ) as set nocount on select * into table from opendatasource('Microsoft.jet.oledb.4.0', 'Data Source='+@path+';Extended properties=Excel 8.0')...[feuille1$] return
Merci
Vous devez pour cela utiliser du SQL dynamique, c'est à dire construire votre instruction SQL au fil de l'eau et la transmettre ensuite au moteur de base de données :
Ici j'utilise le type NVARCHAR car la procédure stockée système sp_executeSQL l'exige.
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 ALTER PROCEDURE... @path NVARCHAR(255) AS BEGIN SET NOCOUNT ON DECLARE @chaineDeConnexion NVARCHAR(512), @SQL NVARCHAR(1024) SET @chaineDeConnexion = 'Data Source='+ @path + ';Extended properties=Excel 8.0' SET @SQL = 'SELECT * INTO dbo.maTable FROM OPENDATASOURCE(''Microsoft.jet.oledb.4.0'', ' + @chaineDeConnexion + ')...[feuille1$]' -- PRINT @SQL EXEC maBD.dbo.sp_executeSQL @SQL END
J'ai étendu la largeur de la variable @path à 255 caractères, car un chemin sous Windows est me semble-t-il limité à cette longueur là
@++![]()
Partager