Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbankübernahme (https://www.delphipraxis.net/164915-datenbankuebernahme.html)

t0mmy 6. Dez 2011 08:15

Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO

Datenbankübernahme
 
Hallo!

Ich habe folgendes szenario:

Eine Tabelle:

Nummer Barcode
3001 30011001
3001 30011002
3001 30011003
3001 30011004

Jetzt möchte ich diese Tabelle von einer Datenbank in eine eigen Tabelle in einer eigenen Datenbank übernehmen.
Wie kann ich das SQL mäßig durchführen?

Sir Rufo 6. Dez 2011 08:25

AW: Datenbankübernahme
 
Mit
Code:
INSERT

t0mmy 6. Dez 2011 08:27

AW: Datenbankübernahme
 
Dieser SQL-Befehle ist mir schon klar... aber ich schaffe es das ich die Nummer 3 mal eintrage aber wie den Barcode?
machs mit einer Schleife

DeddyH 6. Dez 2011 08:28

AW: Datenbankübernahme
 
SQL-Code:
INSERT INTO NeueTabelle(Nummer, Barcode)
SELECT Nummer, Barcode FROM AlteTabelle

t0mmy 6. Dez 2011 08:31

AW: Datenbankübernahme
 
Okay.. vlt hab ich mich nicht wohl richtig ausgedrückt.

Ich habe zwei unterschiedliche Datenbanken.
Das heißt in der einen Datenbank ist die Tabelle aus der ich die werte lesen möchte und in der anderen Datenbank ist meine eigene Tabelle woo ich die gelesenen werte eintragen möchte.

Edit: Die Bezeichnungen für die Nummer und den Barcode lauten auch anders.

p80286 6. Dez 2011 08:36

AW: Datenbankübernahme
 
dann hol' doch die Daten mit einem Select ab und schreib sie mit dem Insert.

Gruß
K-H

Sir Rufo 6. Dez 2011 08:59

AW: Datenbankübernahme
 
Zitat:

Zitat von t0mmy (Beitrag 1139642)
Die Bezeichnungen für die Nummer und den Barcode lauten auch anders.

Da war die Glaskugel von DeddyH wohl etwas verschwommen :mrgreen:

jobo 6. Dez 2011 09:04

AW: Datenbankübernahme
 
Wenn DeddyH etwas mehr Empathie an den Tag legen würde, hätte er es aber sicher besser machen können.
;)

Sir Rufo 6. Dez 2011 09:04

AW: Datenbankübernahme
 
So mal kurz dahin getippt und auf das Wesentliche reduziert:
Delphi-Quellcode:
SourceQuery.SQL.Text := 'SELECT Nummer, Barcode FROM ABarcodeTable';
DataSource.DataSet := SourceQuery;
TargetQuery.SQL.Text := 'INSERT INTO MyBarcodeTable ( MyNumber, MyBarcode ) VALUES ( :Nummer, :Barcode )';
TargetQuery.DataSource := DataSource;

TargetQuery.Prepared := True;

SourceQuery.Open;
while not SourceQuery.EOF do
begin
  TargetQuery.ExecSQL;
  SourceQuery.Next;
end;
SourceQuery.Close;

TargetQuery.Prepared := False;

Bummi 6. Dez 2011 09:07

AW: Datenbankübernahme
 
Wenn die Datenbanken auf den gleichen Server laufen kannst Du direkt per SQL durchgreifen, wenn nicht kannst Du dies ebenfalls falls Du auf die Importdatenbank einen Verbindungsserver einrichten kannst.

DeddyH 6. Dez 2011 09:16

AW: Datenbankübernahme
 
Zitat:

Zitat von jobo (Beitrag 1139651)
Wenn DeddyH etwas mehr Empathie an den Tag legen würde, hätte er es aber sicher besser machen können.
;)

Kennt einer einen Lehrgang zum CSI, wo ich mich anmelden könnte? :roll:

An Tagen wie diesem frage ich mich manchmal, wieso ich mir das eigentlich antue.

Bummi 6. Dez 2011 09:18

AW: Datenbankübernahme
 
http://www.kartenlegen-astrologie-he...n-fernkurs.htm

DeddyH 6. Dez 2011 09:20

AW: Datenbankübernahme
 
:lol: Thx

Eppos 6. Dez 2011 09:24

AW: Datenbankübernahme
 
Es geht auch ohne Programmierung:
1. Daten in Excel exportieren
2. Verkettungsbefehl und daraus den Insert erstellen
3. Per SQL_Script einlesen.
Fetig :-)

t0mmy 7. Dez 2011 07:52

AW: Datenbankübernahme
 
So nach langem Probieren hab ichs nun selber geschafft.
Und zwar mit den Eigenschaften First und Next von der Query und einer For-Schleife kann ich nun die Barcodes ach dazuschreiben.

Jetzt hätte ich eine andere Frage. Und zwar ich möchte für meine Einträge in der Tabelle eine fortlaufende ID... Gibt es da nicht einen Datentyp der beim automatischen Eintrag fortlaufend Nummeriert?

DeddyH 7. Dez 2011 07:54

AW: Datenbankübernahme
 
Ja.

t0mmy 7. Dez 2011 16:11

AW: Datenbankübernahme
 
Danke, aber ganz blöde Frage Wie erstelle ich so eine IDENTITY-Saplte in meiner Datenbank?

Sir Rufo 7. Dez 2011 16:20

AW: Datenbankübernahme
 
Zitat:

Zitat von t0mmy (Beitrag 1140106)
Danke, aber ganz blöde Frage Wie erstelle ich so eine IDENTITY-Saplte in meiner Datenbank?

Also ich würde da mal ganz einfach so daran gehen:
  • Bei dem Link von DeddyH ist auch ein Beispiel-CREATE zu sehen, dieses würde ich einfach mal auf meinem DB-Server ausführen
  • Nun schaue ich mir diese erzeugte Tabelle an und versuche herauszufinden, wo denn bitteschön diese Informationen mit IDENTITY und 100 und 1 wiederzufinden sind
  • Sollte das nicht ganz klar sein, führe ich das Beispiel-CREATE nochmal aus, aber lasse dabei das mit dem IDENTITY weg (anderer Tabellen-Name) und vergleiche diese beiden Tabellen
Jetzt sollte man es auch hinbekommen, so eine Spalte in den eigenen Tabellen zu erstellen.

Man kann sich aber bestimmt auch durch die Dokumentation des SQL-Servers durcharbeiten

Furtbichler 10. Dez 2011 08:33

AW: Datenbankübernahme
 
Es ist mir ein Rätsel, wieso man nicht das SQL Management Studio des SQL-Servers verwendet, um
* Eine Tabelle einer fremden Datenbank in die eigene zu überführen, bzw. zu importieren.
* Eine Spalte als Identity zu definieren.
* F1 drücken und sich durcharbeiten

oder noch einfacher:
* Einfach mal Google verwenden

Um Daten einer beliebigen Datenquelle zu importieren, kann man den Spezifizierer "OPENROWSET" verwenden, der über ADO eine beliebige Quelle anzapft. Dann geht das ganz ohne Delphi, und zwar in etwa so:

Code:
select * into myLocalTable from OPENROWSET
insert into mylocalTable (col1,col2,col3) select (externalcol1, externalcol2, externalcol3) from OPENROWSET

Sir Rufo 10. Dez 2011 11:26

AW: Datenbankübernahme
 
Zitat:

Zitat von Furtbichler (Beitrag 1140710)
Es ist mir ein Rätsel, wieso man nicht das SQL Management Studio des SQL-Servers verwendet, um
* Eine Tabelle einer fremden Datenbank in die eigene zu überführen, bzw. zu importieren.

Wenn man das nur einmal machen muss ja

Wenn aber diese Import-Vorgänge regelmäßig vorkommen, dann eher nein ;)

s.h.a.r.k 10. Dez 2011 17:23

AW: Datenbankübernahme
 
Zitat:

Zitat von t0mmy (Beitrag 1140106)
Danke, aber ganz blöde Frage Wie erstelle ich so eine IDENTITY-Saplte in meiner Datenbank?

Warum eignest du dir nicht einfach mal die Grundlagen der DB-Programmierung an? Es gibt echt soooo viel im Netz zu finden, oder auch schon alleine hier im Forum. Dir wird kein Mensch freiwillig die komplette Arbeit abnehmen, es muss einfach ein gewisser Grad an Eigenleistung her! Und das fehlt hier leider komplett.

PS: Eine Frage pro Thread, sonst wirds unübersichtlich!

p80286 10. Dez 2011 22:41

AW: Datenbankübernahme
 
Zitat:

Zitat von Bummi (Beitrag 1139659)

Eine spitzen Idee! Damit verdient sich einfacher Geld als mit Datenbanken.

Gruß
K-h

Iwo Asnet 11. Dez 2011 11:57

AW: Datenbankübernahme
 
[QUOTE=Sir Rufo;1140721]
Zitat:

Zitat von Furtbichler (Beitrag 1140710)
Wenn man das nur einmal machen muss ja
Wenn aber diese Import-Vorgänge regelmäßig vorkommen, dann eher nein ;)

DTS-Skript? Geht zwar nicht in Express, aber davon steht da nix.
Ansonsten, wie ich schon sagte, über OPENROWSET auf die fremde Datenquelle zugreifen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz