create script von Oracle nach PostgreSQL

Hi


Ich habe hier eine Anwendung die eine kleine Datenbank benutzt. Offiziell wird Oracle und MSSQL unterstützt. Da dies aber eine JAVA Anwendung ist und diese per JDBC die DB ansteuert und sowieso JNDI verwendet sehe ich trotzdem mal Chancen für PostgreSQL.

Hier mal ein Oracle Script

CREATE TABLE OW_ATTRIBUTE_BAG (
        UserName       varchar2(128)  NOT NULL,
        BagName        varchar2(128)  NOT NULL,
        AttributeName  varchar2(128)  NOT NULL,
        AttributeValue varchar2(1024) NOT NULL,
        CONSTRAINT OW_ATTRIBUTE_BAG_PK PRIMARY KEY (UserName, BagName, AttributeName)
);

Jetzt bin ich mir aber nicht sicher ob ich das so richtig nach PostgreSQL übersetze

CREATE TABLE ow_attribute_bag
(
   "UserName" char NOT NULL DEFAULT 128, 
   "BagName" char NOT NULL DEFAULT 128, 
   "AttributeName" char NOT NULL DEFAULT 128, 
   "AttributeValue" char NOT NULL DEFAULT 1024, 
   CONSTRAINT "OW_ATTRIBUTE_BAG_PK PRIMARY" PRIMARY KEY ("UserName", "BagName", "AttributeName")
) 
WITH (
  OIDS = FALSE
)
;
ALTER TABLE ow_attribute_bag OWNER TO gatein;

So OK? Oder was muss ich da was besser machen?

lg
Darko

Gegenfrage: funktioniert es so?

Wohl kaum. Schon, weil ‘128’ nicht in ein CHAR gehen.

Frage aber: ist das die Systax von ORA um einen Default anzugeben? Falls ja: in welchen Land heißen die Leute per Default so?


schöne Grüße aus dem Maschinenraum :wink:


Andreas

Ah, das sollte wahrscheinlich in PostgreSQL auch VARCHAR(128) sein, und nicht “DEFAULT 128” …

Hmm Ich nahm zuerst an varchar ist vergleichbar mit char. Evtl sollte ich dann “character varying” nehmen? Bin kein SQL Crack und von Oracle habe ich null Ahnung. Ich habe keine Oracle DB und ich will auch keine. Nicht für Geld und gute Worte. Zudem ist mir die Logic der Applikation unbekannt. Die DB besteht jedenfalls nur aus einer Tabelle. Wäre diese Beispiel treffender?

CREATE TABLE ow_attribute_bag
(
   "UserName" character varying(128) NOT NULL, 
   "BagName" character varying(128) NOT NULL, 
   "AttributeName" character varying(128) NOT NULL, 
   "AttributeValue" character varying(1024) NOT NULL, 
   CONSTRAINT "OW_ATTRIBUTE_BAG_PK PRIMARY" PRIMARY KEY ("UserName", "BagName", "AttributeName")
) 
WITH (
  OIDS = FALSE
)
;
ALTER TABLE ow_attribute_bag OWNER TO gatein;

lg
Darko

Schaut besser aus, testen mußt Du es.

Hint: wenn Du die Datentypen nicht kennst, so lese PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: Character Types

Andreas

Noch ein Tipp: lass die doppelten Anführungsstriche alle weg. Damit werden Spalten- und Tabellennamen case-sensitive und das nervt auf Dauer fürchterlich.

Vielleicht solltest du das dann jemanden machen lassen, der davon mehr Ahnung hat?
Kann ja nicht zielführend sein, wenn du nicht weisst, was du machen willst und machen sollst und dich durch Raten deinem Ziel näherst.

Jain ich weis nicht mal ob ich die Software überhaupt haben will. Das ist ein CMIS Client der mit Nuxeo ECM zusammenarbeiten soll. Nuxeo habe ich mit PostgreSQL eingerichtet sowie habe ich das Storage auch als weitere PostgreSQL Datenbank konfiguriert. Damit bin ich in der Lage die Applikationen in die Cloud zu Sourcen aber die DB’s auf eigenen Servern zu betreiben. Das ist die eigentliche Baustelle.
Das Problem bei der Sache ist das ich derzeit bei dem DMS immer noch mit administrativen Rechten Arbeiten muss sofern CMIS benutzt wird. Im produktiven Betrieb eine prekäre Situation. Im derzeitigen Stadium macht es keinen Sinn Leute zu engagieren solange das Hauptproblem besteht. Ich statte jetzt zum Einen das System weiter aus und Versuche nebenbei noch die Lösung zu finden.