Tabelle von einem Server auf den anderen Importieren

Chillazz

Benutzer
Beiträge
22
Guten Morgen oder guten Tag Liebe Community ,
ich habe ein kleines Problem, und eventuell kann mir ja einer von euch hier helfen.
Da ich noch totaler Anfänger bin schaue ich öfter bei euch vorbei, und bisher konnte ich immer nützliche Tipps finden.
Da ich aber wie gesagt noch totaler Anfänger bin versteh ich einfach viele schritte noch nicht , deshalb falls mir einer bei meinen Problem lösen kann , wäre es total nett wenn man zu den schritten schreibt was da geschieht , da ich nicht einfach nur was abschreiben will ,sondern ja lernen .
Folgendes Problem !
Ich muss von einer vorhandenen Datenbank eine paar Spalten auf eine andere Datenbank kopieren, wo ich eine Tabelle mit den Spalten angelegt habe.
Dies soll mit einer SP gemacht werden, hier mal mein Ansatz.


createPROCEDURE[dbo].[uspneueTabelle]
@Artikelnvarchar(10), <<< sind nicht die richtigen Daten
@Preisnvarchar(10),
@Artikelbezeichnungnvarchar(50),
@Markenvarchar(15),
@Mengenvarchar(20)

AS
BEGIN

SETNOCOUNTON;
INSERTINTO[dbo].[tmpNEU Angelegte Tabelle auf server 2 ]
([Artikel]
,[Preis]
,[Artikelbezeichnung]
,[Marke]
,[Menge])

VALUES
(@Artikel
,@Preis
,@Artikelbezeichnung
,@Marke
,@Menge)


END
Mir fehlt jetzt glaube ich der Befehl, wo her ich die Daten ziehe und von welchen Server oder?
Für jede Hilfe bedanke ich mich schon einmal sehr herzlich.
 
Werbung:
Hallo Chillazz,
gibt es in der Tabelle eine ID-Spalte? Oder Was genau ist der Primärschlüssel der Tabelle?
Du könntest die "alte-Datenbank" in deinem Server mit der neuen DB connecten und das ganze über eine Abfrage lösen z.B.:

SET @ID = 1;

WHILE (@ID < 1000)
BEGIN
-- alte Datensätze auslesen:
SET @ID = (select [ID] from [dbo].[tmp] where [ID] = @ID);
SET @Artikel = (select [Artikel] from [dbo].[tmp] where [ID] = @ID);
.
.
.

-- Datensätze in neue TBL eintragen:
SET @query = ('INSERTINTO [dbo].[tmpNEU] VALUES (' +
CHAR(39) + ISNULL(@Artikel, 'null') + CHAR(39) + ',' +
CHAR(39) + ISNULL(@Preis, 'null') + CHAR(39) + ',' +
CHAR(39) + ISNULL(@Artikelbezeichnung, 'null') + CHAR(39) + ',' +
CHAR(39) + ISNULL(@Marke, 'null') + CHAR(39) + ',' +
CHAR(39) + ISNULL(@Menge, 'null') + CHAR(39) + ')');


EXEC sp_executesql @query;

SET @ID += 1;

-- <- Hier wird ein SQL-Statement zusammengeschrieben in die Variable "@query", anschließend wird dieses mit "EXEC sp_executesql" ausgeführt.
-- Char(39) ist ein ' (Anführungszeichen), das brauchst du an dieser Stelle, da du den Datentyp "Nvarchar" nutzt.
-- + verbindet Strings, eine andere Möglichkeit wäre noch die Funktion "CONCAT()" (kannst du bei Interesse mal nach googeln)
-- So wird (vorausgesetzt die TBL hat eine ID-Spalte) die ID hochgezählt, bis 1000 (While-Schleife) und jeder Datensatz einzeln eingetragen...
-- sicher nicht der perfomanteste weg, es gibt irgendwie auch die möglichkeit eine ganze Tabelle abzufragen und zu speichern (s. programmability -> Functions -> table-valued-functions )
-- wie das allerdings in SPs geht, kann ich dir noch nicht sagen, hab ich bisher noch nicht gemacht...
END

Ich hoffe, das bringt dich schon mal irgendwie weiter...
LG Huan
p.s. achtung, Code ungetestet!!!
 
Werbung:
Danke dir sehr Herzlich für die Hilfe Huan
Habe später einen weg gefunden der komischerweise total simple war , danke Hilfe natürlich:p
Ich merke aber es ist noch viel sehr viel Arbeit ,für mich um SQL zu verstehen .


Create PROCEDURE[dbo].[Name der zu erstellenden SP]
AS
BEGIN

SETNOCOUNTON;
INSERTINTO[dbo].[Wohin es Kopiert werden soll]
([Artikel]
,[Preis
,[Marke]
,[Menge])


SELECT
[Artikel
,[Preis]
,[Marke]
,[Menge]

FROM[Server].[Ordner].[dbo].[Tabelle woher er die Daten nimmt ]

END

LG Chillazz
 
Zurück
Oben