Comment faire pour importer des données vers MS Access Utilisation des procédures stockées SQL

Comment faire pour importer des données vers MS Access Utilisation des procédures stockées SQL


Importation de données dans une base de données Microsoft Access à l'aide de procédures stockées est un sujet souvent négligé. Alors que de nombreuses ressources existent pour importer des données à partir d'une base de données Access dans une base de données Microsoft SQL Server, le déplacement de données dans l'autre sens est pas aussi commun. Essentiellement, un \ "serveur lié \" sera le véhicule de choix pour l'importation de données dans la base de données Access. Ensuite, une procédure stockée peut facilement effectuer des importations et des exportations librement entre la base de données SQL Server et la base de données Access.

Instructions

Configurer et tester le serveur lié

1 Connectez-vous à SQL Server et créer un nouveau serveur lié. Cela peut être fait en utilisant le script SQL suivant, qui va créer un nouveau serveur aimé appelé \ "AccessDB. \" (La valeur après @datasrc est le chemin d'accès à la base de données d'accès sur l'ordinateur qui exécute SQL Server.)

EXEC sp_addlinkedserver
@server = 'AccessDB',
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet »,
@datasrc = 'C: \ Path \ to \ Access \ Database.mdb'
ALLER

2 Testez le serveur lié en sélectionnant à partir d'une table existante dans la base de données Access (facultatif). Par exemple, s'il y a une table appelée \ "Table1 \" dans la base de données Access, le script SQL suivante sélectionne toutes les données qu'il contient.

SÉLECTIONNER


DE OPENQUERY (AccessDB, 'SELECT FROM Table1')

3 Si nécessaire, vous pouvez supprimer le serveur lié en utilisant la procédure de sp_dropserver.

EXECUTE sp_dropserver 'AccessDB'

Importation de données dans la base de données d'accès

4 Pour importer des données dans une table existante dans la base de données Access, la syntaxe INSERT OPENQUERY (...) doit être utilisé. Par exemple, si la table SQL Server est appelé SrvTable et la table d'accès est appelée Table1 et les deux tables contiennent les mêmes colonnes, le script SQL suivant permet de copier les données de la table SQL Server dans la table d'accès.

INSERT OPENQUERY (AccessDB, 'SELECT

FROM Table1')
SELECT FROM SrvTable

5 Si nécessaire, vous pouvez également mettre à jour les données existantes dans la base de données Access à partir du SQL Server en utilisant la syntaxe OPENQUERY UPDATE, comme on le voit ci-dessous.

UPDATE OPENQUERY (AccessDB, 'SELECT * FROM Table1')
SET Col1 = 'Testing ...'

6 Vous pouvez également supprimer des données de la base de données Access en utilisant la syntaxe OPENQUERY DELETE. (Notez les guillemets simples échappés [ ''] à l'intérieur de l'instruction OPENQUERY.)

SUPPRIMER OPENQUERY (AccessDB, 'SELECT * FROM Table1 WHERE Col1 =' 'Testing ...' '')

7 Enfin, créer une procédure stockée qui utilise une combinaison des états OPENQUERY pour accomplir votre tâche d'importation de données. Par exemple, pour copier tous les enregistrements de la SrvTable à table1 la base de données Access, puis mettre à jour Col1 à \ "Testing ... \", utilisez le script SQL suivant.

CREATE PROCEDURE CopyToTable1 AS BEGIN
INSERT OPENQUERY (AccessDB, 'SELECT FROM Table1')
SELECT FROM SrvTable

UPDATE OPENQUERY (AccessDB, 'SELECT * FROM Table1')
SET Col1 = 'Testing ...'
FIN

Conseils et avertissements

  • Les serveurs liés peuvent également être créés à partir d'une procédure stockée aussi longtemps qu'ils ont un nom unique
  • Le pilote de base de données Jet n'a pas été conçu pour la haute transaction ou à haut volume débit, de sorte que cela ne soit pas recommandé pour les situations où la performance est critique.