Sådan importeres data til MS Access Brug SQL Stored Procedures

July 26

Sådan importeres data til MS Access Brug SQL Stored Procedures


Import af data i en Microsoft Access-database ved hjælp af lagrede procedurer er en ofte overset emne. Mens der findes mange ressourcer til at importere data fra en Access-database til en Microsoft SQL Server-database, flytning af data den anden vej er ikke så almindeligt. Væsentlige, en \ "knyttet server \" vil være i køretøjet af valg for at importere data i Access-databasen. Derefter kan en lagret procedure let udføre import og eksport frit mellem SQL Server-databasen og Access-database.

Instruktioner

Konfigurer og Test Linked Server

1 Opret forbindelse til SQL Server og oprette en ny koblet server. Dette kan gøres ved hjælp af følgende SQL-script, som vil skabe en ny ønsket server kaldet \ "AccessDB. \" (Værdien efter @datasrc er stien til Access-database på den computer, der kører SQL Server.)

EXEC sp_addlinkedserver
@server = 'AccessDB «,
@provider = 'Microsoft.Jet.OLEDB.4.0',
@srvproduct = 'OLE DB Provider for Jet «,
@datasrc = 'C: \ sti \ til \ Access \ Database.mdb'

2 Test forbundet serveren ved at vælge fra en eksisterende tabel i Access-databasen (dette er valgfrit). For eksempel, hvis der er en tabel kaldet \ "Tabel1 \" i Access-databasen, vil følgende SQL script vælge alle data fra det.

VÆLGE


FRA OPENQUERY (AccessDB, "SELECT FROM Tabel1")

3 Hvis det er nødvendigt, kan du fjerne den sammenkædede serveren ved hjælp af sp_dropserver procedure.

EXECUTE sp_dropserver 'AccessDB'

Import af data i Access Database

4 For at importere data i en eksisterende tabel i Access-databasen, skal der anvendes INSERT OPENQUERY (...) syntaks. For eksempel, hvis SQL Server bordet kaldes SrvTable og Access tabellen kaldes Tabel1 og begge tabeller indeholder de samme kolonner, vil følgende SQL-script kopiere dataene fra SQL Server tabel i Access tabellen.

INSERT OPENQUERY (AccessDB, "SELECT

FROM Tabel1")
SELECT FROM SrvTable

5 Hvis det er nødvendigt, kan du også opdatere eksisterende data i Access-databasen fra SQL Server ved hjælp af UPDATE OPENQUERY syntaks, som det ses nedenfor.

UPDATE OPENQUERY (AccessDB, "SELECT * FROM Tabel1")
SET Col1 = 'Test ... «

6 Du kan også slette data fra Access-databasen ved hjælp af DELETE OPENQUERY syntaks. (Bemærk de undslupne enkelte anførselstegn [ ''] inde i OPENQUERY erklæring.)

SLET OPENQUERY (AccessDB, "SELECT * FROM Tabel1 WHERE Col1 = '' Testing ... '' ')

7 Endelig oprette en lagret procedure, der bruger en hvilken som helst kombination af de OPENQUERY erklæringer for at udføre din data import opgave. For eksempel for at kopiere alle poster fra SrvTable at Tabel1 Access-database, derefter opdatere Col1 til \ "Testing ... \", skal du bruge følgende SQL-script.

CREATE PROCEDURE CopyToTable1 AS BEGIN
INSERT OPENQUERY (AccessDB, "SELECT FROM Tabel1")
SELECT FROM SrvTable

UPDATE OPENQUERY (AccessDB, "SELECT * FROM Tabel1")
SET Col1 = 'Test ... «
ENDE

TIPS

  • Forbundne servere kan også oprettes inden for en lagret procedure fra så længe de har et unikt navn
  • Jet database-driveren er ikke designet til high-transaktion eller høj volumen gennemløb, så det anbefales ikke til situationer, hvor udførelsen er kritisk.