shadowano Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Hei Jeg har en database hvor jeg kjører en select. Resultatet av selecten ønsker jeg å inserte i en annen database. Løsningen jeg har nå er at jeg loop igjennom selecten og inserter for hver rad. Finnes det ikke en bedre løsning, som å sende med hele resultatet inn i en sqlcommand til den nye databasen hvor den inserter eller noe lignende? -Martin Lenke til kommentar
arex1337 Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html Lenke til kommentar
shadowano Skrevet 5. desember 2007 Forfatter Del Skrevet 5. desember 2007 fra MSSQL til MSSQL er det jeg skal ha tak i, ikke MySQL Lenke til kommentar
arex1337 Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Ops Hva med http://freshmeat.net/projects/mssqldump/?b...lease_id=242315 ? Lenke til kommentar
Manfred Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Det står da lidderlig MSSQL i topic og ikke mysql. Spørsmål 1 er jo om vi snakker 2 databaser på samme server. Hvis dette er tilfellet, og du har en bruker som har tilgang på begge databasene kan du jo bare kjøre spørringen: INSERT INTO dbo.Database1.Tabell(Verdi1, verdi2) SELECT verdi1, verdi2 FROM dbo.Database2.Tabell kindof... Lenke til kommentar
shadowano Skrevet 5. desember 2007 Forfatter Del Skrevet 5. desember 2007 (endret) hehe, jeg er mer keen på å skrive koden i c# enn å fikle med PHP script... Men takk for forslag Begge databasene ligger på to ulike servere, så får ikke kjørt INSERT INTO SELECT. Er det ikke en c# klasse eller funksjon som tar i mot en DataReader f.eks og kjører insert med denne mot spesifisert connection? Edit: Jeg ser for meg at å loope igjennom selecten for så å inserte hver rad er en tungvindt jobb..... men kanskje det er eneste løsning når db'ene ligger på to servere? Endret 5. desember 2007 av martin82 Lenke til kommentar
serverside Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 hehe, jeg er mer keen på å skrive koden i c# enn å fikle med PHP script... Men takk for forslag Begge databasene ligger på to ulike servere, så får ikke kjørt INSERT INTO SELECT. Er det ikke en c# klasse eller funksjon som tar i mot en DataReader f.eks og kjører insert med denne mot spesifisert connection? Edit: Jeg ser for meg at å loope igjennom selecten for så å inserte hver rad er en tungvindt jobb..... men kanskje det er eneste løsning når db'ene ligger på to servere? Enkleste løsning er vel å dumpe all data til en tekst/xml fil, kopiere filen til den andre serveren og gjøre en bulk insert. Ellers finnes det jo replikering i MS SQL som gjør slikt. Hvilken versjon av SQL bruker du? Er det snakk om mye data? Lenke til kommentar
alftore Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Du kan kikke på DTS (Data Transformation Services) og se om du finner en løsning der. http://www.sqldts.com/ Kanskje du kan forklare litt mer hva du prøver å oppnå? hvorfor ønsker du å legge in radene i den andre databasen? Er det noe som kjører ofte, eller kanskje bare en gang om dagen? Lenke til kommentar
Manfred Skrevet 5. desember 2007 Del Skrevet 5. desember 2007 Spørsmålet er jo da om han har tilgang til admin-verktøy på begge serverne, og kan kjøre DTS-pakker. Og dersom det er Express på en av serverne har det ikke støtte for DTS. Men kjører man fullversjon, har full tilgang, så vil jeg vel også si at DTS er det beste alternativet. Lenke til kommentar
kaffenils Skrevet 6. desember 2007 Del Skrevet 6. desember 2007 Det står da lidderlig MSSQL i topic og ikke mysql. Spørsmål 1 er jo om vi snakker 2 databaser på samme server. Hvis dette er tilfellet, og du har en bruker som har tilgang på begge databasene kan du jo bare kjøre spørringen: INSERT INTO dbo.Database1.Tabell(Verdi1, verdi2) SELECT verdi1, verdi2 FROM dbo.Database2.Tabell kindof... Du har byttet om catalog og schema. Det skal være database1.dbo. ikke dbo.database1, men det er nok bare en liten leif. Og hvis det er på to forskjellige servere kan du enkelt og greit bruke 4-parts navn i spørringen, enten ved å opprette en linked server, eller ad-hoc ved å bruke OPENDATASOURCE. Linked server: INSERT INTO Database1.dbo.Tabell(Verdi1, verdi2) SELECT verdi1, verdi2 FROM MySourceServer.Database2.dbo.Tabell OPENDATASOURCE: INSERT INTO dbo.Database1.Tabell(Verdi1, verdi2) SELECT verdi1, verdi2 FROM from opendatasource('sqlncli','server=MySourceServer;user id=myuser;password=mypwd').database2.dbo.Tabell Lenke til kommentar
shadowano Skrevet 6. desember 2007 Forfatter Del Skrevet 6. desember 2007 Jeg tror nok kaffenils sitt forslag passer best. Jeg har ikke tilgang til den serveren jeg kopierer fra, kun den jeg kjører asp.net siden fra. Jeg kopierer dataene pga at jeg skal kjøre flere spørringer lokalt framfor å bry den eksterne serveren med dette. Det er ikke en spørring som kjøres ofte. Jeg skal se nærmere på forslaget ditt kaffenils. takker også for andre forslagene:) Lenke til kommentar
shadowano Skrevet 7. desember 2007 Forfatter Del Skrevet 7. desember 2007 bruker jeg opendatasource foran hver tabell i database 2? Jeg ser for meg at den lager en ny kobling mot database2 for hver tabell da... Lenke til kommentar
kaffenils Skrevet 8. desember 2007 Del Skrevet 8. desember 2007 bruker jeg opendatasource foran hver tabell i database 2? Jeg ser for meg at den lager en ny kobling mot database2 for hver tabell da... Hvis meningen er at du skal koble deg opp mot server2 regelmessig er det bedre å opprette en linked server og bruke denne i spørringene. Se mitt eksempel nr. 1. Enkleste måte å opprette en linked server på, hvis du ikke har gjort det før, er å bruke SSMS. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå