Avatar billede sbay Nybegynder
10. september 2008 - 15:06 Der er 9 kommentarer og
1 løsning

Import fra Access til MSSQL

Hejsa

Jeg skal importere data fra en Access base til en SQL base. Tabellerne hedder det samme, og nogle data i Access er identiske med data i SQL. Jeg vil gerne via DTS (SQL server 2000) overføre dem der ikke eksisterer (kan ses på kundenummer). Jeg skal bruge noget SQL a'la

Select * from access.kunde not in (select * from sql.kunde)

men hvordan laves det syntaktisk korrekt?
Avatar billede sbay Nybegynder
10. september 2008 - 15:07 #1
Det er egentligt prefix access og sql, jeg ikke rigtig ved hvad skal hedde?
Avatar billede aaberg Nybegynder
10. september 2008 - 15:52 #2
Du kan ikke i en query hente data fra både Access og SQL Server.

Nu har jeg ikke arbejdet med DTS. Men jeg har arbejdet en del med Integration Services, som er en nyere version av DTS. Der kan du gøre det du prøver på med en Lookup task. Der må være noget tilsvarende i DTS.
Avatar billede michaelthomsendk Nybegynder
10. september 2008 - 15:53 #3
Select *
From access.kunde a
Where Not Exists (Select * From sql.kunde s Where a.kundenummer = s.kunnenummer)
Avatar billede sbay Nybegynder
10. september 2008 - 16:17 #4
OK - men kan jeg så lave michaelthomsendk's løsning direkte i en query? Hvordan for jeg den forklaret at den ene base er i Access?
Avatar billede michaelthomsendk Nybegynder
10. september 2008 - 16:31 #5
To muligheder.

1. Lav din Access som Linked Server, det er et par år siden jeg har brugt denne mulighed.

2. Lav en ekstra tabel, paste dine data ind, flyt og ryd så op igen.
Avatar billede arne_v Ekspert
11. september 2008 - 12:55 #6
INSERT INTO sql.kunde
SELECT * FROM  access.kunde
WHERE NOT EXISTS ...

og maaske var det nemmere at lade Access linke til SQLServer og udfoere INSERT derfra.
Avatar billede sbay Nybegynder
11. september 2008 - 13:42 #7
Hejsa

Tak for inputs - vil måske bruge dem senere, men jeg endte i går med at bruge LEI (IBM Lotus Enterprise Integrator) - Det er nemt og ligetil og jeg bruger det i mange andre sammenhænge. Håbede dog MS Access og MS SQL var bedre til at snakke sammen end de åbenbart er.
Avatar billede sbay Nybegynder
07. oktober 2008 - 11:13 #8
Nå, har rodet lidt videre med det i ACCESS(SCCust) og linket den sammen med MSSQL (dbo_SCCust1 ).

Men jeg kan ikke få min query til at virke:

INSERT INTO  dbo_SCCust1 SELECT  * FROM SCCust WHERE NOT EXISTS (SELECT *
FROM dbo_SCCust1 WHERE dbo_SCCust1.Cust_Num1 = SCCust.Cust_Num)

Efterfølgende vil jeg gerne noget a'la:
UPDATE  dbo_SCCust1 SET XXXXX=XXXX WHERE dbo_SCCust1.Cust_Num1 = SCCust.Cust_Num
Skal jeg så have alle kolonnenavnene med? Eller er der en easy way?
Avatar billede sbay Nybegynder
07. oktober 2008 - 14:50 #9
Savr til mig selv... Lavede linked table fra Access - kunne så overføre hele tabellen til en ny i SQL.

Lavede så denne her:
INSERT INTO  SCCust SELECT  * FROM SCCust2 WHERE NOT EXISTS (SELECT *
FROM SCCust WHERE SCCust.Cust_Num = SCCust2.Cust_Num)

og derefter denne her:
UPDATE    SCCust
SET             
Cust_Name = SCCust2.Cust_Name,
Cust_Address =SCCust2.Cust_Address,
Cust_County = SCCust2.Cust_County,
Cust_Post_Code = SCCust2.Cust_Post_Code,
Cust_Memo = SCCust2.Cust_Memo,
Cust_Contact = SCCust2.Cust_Contact,
Cust_Fax = SCCust2.Cust_Fax,
Cust_Email = SCCust2.Cust_Email,
Cust_Phone = SCCust2.Cust_Phone,
Cust_Last_Inv_Amount = SCCust2.Cust_Last_Inv_Amount,
Cust_Last_Inv_Number = SCCust2.Cust_Last_Inv_Number,
Cust_Last_Update = SCCust2.Cust_Last_Update,
Cust_Analysis = SCCust2.Cust_Analysis,
Cust_On_Hold = SCCust2.Cust_On_Hold,
Cust_Disc_1 = SCCust2.Cust_Disc_1,
Cust_Disc_2 = SCCust2.Cust_Disc_2,
Cust_Disc_3 = SCCust2.Cust_Disc_3,
Cust_Credit_Limit = SCCust2.Cust_Credit_Limit,
Cust_Credit_Balance = SCCust2.Cust_Credit_Balance,
Cust_VAT_Num = SCCust2.Cust_VAT_Num,
Cust_Cust_Ref = SCCust2.Cust_Cust_Ref,
Cust_Para = SCCust2.Cust_Para,
Cust_Cur_Code = SCCust2.Cust_Cur_Code,
Cust_VAT_Code = SCCust2.Cust_VAT_Code,
Cust_Type = SCCust2.Cust_Type,
Cust_Billable = SCCust2.Cust_Billable,
Cust_Attachment = SCCust2.Cust_Attachment,
Cust_Bank_Acc_Number = SCCust2.Cust_Bank_Acc_Number,
Cust_Bank_Sort_Code = SCCust2.Cust_Bank_Sort_Code,
Cust_Bank_Address = SCCust2.Cust_Bank_Address, 
Cust_VAT_Inv_Flag = SCCust2.Cust_VAT_Inv_Flag,
Cust_Bank_Name = SCCust2.Cust_Bank_Name,
Cust_Credit_Term = SCCust2.Cust_Credit_Term,
Cust_SIC = SCCust2.Cust_SIC,
Cust_Country = SCCust2.Cust_Country,
Cust_PORequired = SCCust2.Cust_PORequired,
Cust_Country_Code = SCCust2.Cust_Country_Code,
Cust_Cont_PORequired = SCCust2.Cust_Cont_PORequired,
Cust_Employ_Num = SCCust2.Cust_Employ_Num,
Cust_Unique_Ref = SCCust2.Cust_Unique_Ref,
Cust_Company_Code = SCCust2.Cust_Company_Code
FROM  SCCust CROSS JOIN SCCust2
WHERE SCCust.Cust_Num = SCCust2.Cust_Num
Avatar billede sbay Nybegynder
06. januar 2009 - 15:18 #10
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester