Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Unterschiede beim Insert, Create und Update???? (https://www.delphipraxis.net/25000-unterschiede-beim-insert-create-und-update.html)

O.T. 29. Jun 2004 16:18


Unterschiede beim Insert, Create und Update????
 
Hi ihr lieben.

Hab mal ne Frage. Und zwar bastelle ich gerade an einem Datenbank-Konvertierungs Tool das Datenbanken von verschiedenen Anbietern konvertiert. Z.B. ORACLE->INFORMIX oder ähnliches.

Dazu schreib ich die Strukturen und die Daten in eine XML-Datei, von der ich dann später wieder auslese.

Nun meine Frage, muss ich wenn ich die Insert und Create Table Statements zusammenbaue ne verschieden Syntax beachten?
Sind die Create und Insert Statements bei Oracle anders als bei anderen Anbietern?

Ich habe zu berücksichtigen:
MSSQL
MySQL
ORACLE
Interbase
Informix

Kann mir jemand eine Kurzreferenz oder ähnliches empfehlen, in der ich die Unterschiede nachschauen kann, oder eine Internetseite, oder weiss von euch einer vielleicht die Unterschiede??

Wäre nett wenn ihr mir helfen könnt...und bedanke mich schon im voraus.

Machts gut.....

:hi:

MrSpock 29. Jun 2004 16:40

Re: Unterschiede beim Insert, Create und Update????
 
Hallo O.T.,

ich vermute dass es beim Create unterschiedliche Datentypen geben könnte. Auch das Herauslesen der Schlüsselfelder oder der Fremdschlüssel könnte in verschiedenen Systemtabellen zu finden sein. Das Insert Statement sollte bei allen funktionieren.

Robert_G 29. Jun 2004 17:32

Re: Unterschiede beim Insert, Create und Update????
 
Zitat:

Sind die Create und Insert Statements bei Oracle anders als bei anderen Anbietern?
Sie sind sich ziemlich ähnlich, aabeeeer....

Ein Oracle-DBA wird dich mit Anlauf aus dem Fenster werfen, wenn du Varchar statt Varchar2, 10 "normale" Indizes anstatt 2 oder 3 Bitmap-Indizes, BLob für Texte anstatt CLob bzw CLob für Binärdaten anstatt BLob nimmst, usw. .
Nimmst du LONG für lange Texte, ist es sofort aus. :lol:


Wie gut kennst du dich mit den DB-internen Sprachen für Trigger, SPs & co aus?
Genau hier versagen sämtliche Tools zur DB-konvertierung, die ich bis jetzt gesehen habe.
Du hast schneller 100 Monster-DBs aufgesetzt als ein Tool zu programmiert, dass diese Sprachen ineinander "übersetzen" kann. (Das wäre auch ein Mammutprojekt :mrgreen: )

Was ich damit sagen will, du musst ein Profi in allen DBs sein, die du untertützen willst. Schließlich musst du auch ihre Vorzüge und Macken kennen (Ein falscher Indextyp/Spaltentyp und Ora wird zur Schnecke).
Da ich mch nur mit Oracle wirklich gut auskenne, würde ich mich an so ein Projekt nicht herantrauen. ;)

Wie würdest du zum Bleistift diese Tabelle für den MS SQL Svr umsetzen?
SQL-Code:
CREATE TYPE address_objtyp AS OBJECT (
  street      VARCHAR2(200),
  city        VARCHAR2(200),
  state       CHAR(2),
  zipcode     VARCHAR2(20));

CREATE TABLE address_objtab OF address_objtyp ;


CREATE TYPE phone_objtyp AS OBJECT (
  location    VARCHAR2(15),
  num         VARCHAR2(14));

CREATE TYPE phone_ntabtyp AS TABLE OF phone_objtyp;

CREATE TABLE people_reltab (
  id           NUMBER(4)  CONSTRAINT pk_people_reltab PRIMARY KEY,
  name_obj     name_objtyp,
  address_ref  REF address_objtyp SCOPE IS address_objtab,
  phones_ntab  phone_ntabtyp)
  NESTED TABLE phones_ntab STORE AS phone_store_ntab ;

CREATE INDEX address_ref_idx ON people_reltab (address_ref) ;
Das ist nur eine einfache Beipieltabelle für nested tables aus der Ora-Doku, "real life"-Tabellen sind oft viel verschachtelter (100-200 Zeilen DDL sind keine Seltenheit für performance kritische Tabellen, da wird dann nur noch mit REFs um sich geworfen).

Ich will dich jetzt nicht komplett demotivieren, du solltest aber wissen, dass du höchstens DDL für Spaltennamen, typen und Primär-/Fremdschlüssel für simple Tabellen nachbilden kannst. Auf den "großen" DBs wirst du solche Tabellen selten finden (sonst läuft da irgendwas verdammt schief :? )

O.T. 30. Jun 2004 10:42

Re: Unterschiede beim Insert, Create und Update????
 
Mmmhh....

Scheint doch kompliziert zu sein. Aber mein Glück: ich muss nur die Datenbank unserer Software konvertieren und keine ausserbetriebliche, und ich glaube die Tabellen sind hier nicht so kompliziert wie du sie hier darstellst. Und die XML-Datei Erstellung klappt schon wunderbar, speichert auch die Indices mit, schaut ungefähr so aus:


Code:


<Datenbank>
-<Metadaten>
 -<Tabelle>
  -<Felder>
    <Feld name="vorname" Typ="Varchar" Length="30"/>
    <Feld name="lfdnr" typ="Integer"/>
   </Felder>
  -<Indices>
   -<Index name="i_adr1" typ="ixunique">
     <Feld name="adrnr"/>
   </Index>
  </Indices>
 </Tabelle>
 </Metadaten>
-<Daten>
 -<Tabelle>
  -<Datensatz>
    <Feld name="vorname">Hans</Feld>
    <Feld name="lfdnr">1</Feld>
   </Datensatz>
  </Tabelle>
 </Daten>
</Datenbank
..und wie gesagt, es klappt auch schon.

Mir geht es auschließlich darum aus so einer, nicht alzu komplizierten XML-Datei die Create und Insert Statements zu erstellen, glaub so mit Objekten in der Datenbanken haben wir nicht, allerdings blobs und unter Informix auch serial Felder....doch im Moment interessiert mich vorerst nur die Syntax der einzelnen Create Statements...

Aber danke euch allen und bis dann.......... :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 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