SQL tabel copy

Status
Niet open voor verdere reacties.

kohltje

Gebruiker
Lid geworden
17 sep 2010
Berichten
45
Hallo,

Ik ben al een tijd bezig met een oplossing te zoeken voor mijn probleem maar het wil maar niet lukken.:mad:

Situatieschets:
Ik wil graag uit 2 tabellen verschillende kolommen kopieren/samenvoegen tot 1 tabel.
De tabellen komen uit verschillende databases!


Als meer uitleg gewenst is... Doe ik dit HEEL graag:o
Bedankt alvast.
 
Ik ga er vanuit dat ze een overeenkomende ID of andere manier hebben om te zien welke rij uit elke database samengevoegd moet worden?

Het beste kun je waarschijnlijk het in twee stappen doen; je maakt een grote tabel voor alle data aan, vervolgens kopieer je de ene tabel er in en daarna update je elke rij met data uit de andere tabel.

Tenminste ik ga er vanuit dat dit een grote overdracht is en geen normaal onderdeel van je databaseopbouw?
 
Bedankt

Thanx voor je antwoord tot nu...

Nou het zit zo:
Ik heb 2 databases en heb:
database 1: op te vragen tabel heeft 3 kolommen (1 kollom bevat data die ik nodig heb)
database 2: op te vragen tabel heeft 7 kolommen (3 kollomen bevat data die ik nodig heb)

de sleutel van deze 2 databases is alleen maar te benaderen door een 3e tabel (tussenstap om de sleutels te linken en er staat data in deze 3e tabel die ook nodig is)

Mijn oplossing hiervoor is om de data over te pompen naar een nieuwe tabel.

Maar hoe krijg ik dit voor elkaar? Ik heb dit via een INTO geprobeerd en met een UNION...
Beide werkte niet. De UNION werkte achteraf sowieso niet vanwege dat de UNION een 'Fake' tabel aanmaakt, waar ik dan geen databewerking meer op los kan laten.

Ik hoop dat het zo duidelijker is?

Nogmaals dank
 
Beste kohltje

ik heb even een klein testscriptje voor je gemaakt.

(Als je SQL server gebruikt)
kijk even naar dit script hoe je uit meerdere databases één tabel kunt vullen.

[SQL]
-- Voorbeeldscript samenvoegen informatie uit twee databases
USE master;
GO

-- database testA
CREATE DATABASE TESTA;
GO

-- Database activeren
USE TESTA;
GO

--tijdelijke tabel "A" maken en vullen met test data
CREATE TABLE A
(
ID INT,
Regel VARCHAR(10)
)
INSERT INTO A(ID, Regel) VALUES (1,'Regel 1');
INSERT INTO A(ID, Regel) VALUES (2,'Regel 2');
INSERT INTO A(ID, Regel) VALUES (3,'Regel 3');
INSERT INTO A(ID, Regel) VALUES (4,'Regel 4');
GO

-- Master Database activeren voor aanmaken nieuwe database
USE master
GO

-- database testB
CREATE DATABASE TESTB;
GO

USE TESTB;
GO

-- tijdelijke tabel "B" maken en vullen met test data
CREATE TABLE B
(
ID INT,
Waarde VARCHAR(10)
);

INSERT INTO B(ID, Waarde) VALUES (2,'Waarde 2');
INSERT INTO B(ID, Waarde) VALUES (3,'Waarde 3');
INSERT INTO B(ID, Waarde) VALUES (4,'Waarde 4');
INSERT INTO B(ID, Waarde) VALUES (5,'Waarde 5');
INSERT INTO B(ID, Waarde) VALUES (6,'Waarde 6');
GO

-- tempdb activeren, zodat de voorbeeld databases niet actief zijn
USE tempdb
GO

-- check of de tijdelijke tabel #Samenvoegtest al bestaat
IF OBJECT_ID(N'tempdb..#Samenvoegtest',N'U') IS NOT NULL
DROP TABLE #Samenvoegtest
;

-- tijdelijke tabel aanmaken
CREATE TABLE #Samenvoegtest
(
ID INT,
Regel VARCHAR(10),
Waarde VARCHAR(10)
);
-- vullen met waarden vanuit twee verschillende databases d.m.v. insert into..Select
-- Het aantal kolommen van de tabel en de query moet overeenkomen!
INSERT INTO #Samenvoegtest
SELECT A.ID,
A.Regel,
B.Waarde
FROM TESTA.dbo.A A
INNER JOIN TESTB.dbo.B B ON B.ID=A.ID;

-- Query op tabel om de data te verifieren
SELECT * FROM #Samenvoegtest

-- tijdelijke databases verwijderen
DROP DATABASE TESTA;
DROP DATABASE TESTB;[/SQL]

en nog even een waarschuwing: gebruik nooit maar dan ook nooit het commando "drop database" of "drop table" in een productieomgeving, tenzij je een read only account hebt en het tijdelijke tabellen betreft (beginnend met hekje/pound/hash("#"))
 
Laatst bewerkt:
Vergeet niet dat het ook mogelijk is om data uit meerdere databases tegelijk te halen als je een user hebt die overal toegang heeft, misschien heb je daar veel meer aan :)

[sql]
SELECT tabel_a.veld_a, tabel_b.veld_b
FROM database_a.tabel_a as tabel_a
INNER JOIN database_b.tabel_b as tabel_b ON tabel_a.id = tabel_b.ander_id
WHERE tabel_b.voorwaarde = 'TRUE'
[/sql]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan