Zum Inhalt springen

[Oracle] Export und Import von Daten


Helios Co.

Empfohlene Beiträge

Hallo @all,

ich habe mal wieder ein Problem mit dem leidigen Zeit Datentypen von Oracle.

Und zwar habe ich 2 Oracle Datenbanken. Eine ist lokal die andere läuft auf einem Server. In einem Tabelspace sind 4 Tabellen,die ich auch lokal haben möchte.

Also habe ich via SqlDeveloper zuerst die DDL exportiert und anschließend den Inhalt der Tabellen als .csv exportiert.

Lokal versuche ich nun die 4 Tabellen wieder zu erstellen und die Daten aus den .csv`s zu importieren. Das Erstellen der Tabellen war kein Problem. Das Importieren ist jedoch durchaus ein Problem.

Einerseits werden Einträge gefunden die Nullwerte enthalten obwohl die Spalte Not Null ist. Wie das kommt ist mir immer noch ein Rätsel.

Das andere große Problem sind Timestamp Spalten. In der Datenbank auf dem Server liegen die Einträge wie folgt vor:


YYYY-MM-DD HH24:MI:SS

Exportiert werden sie so:

DD.MM.YY HH:MM:SS,Milis

Bsp. 18.10.05 07:18:26,000000000

Auf diese Weise werden keine Spalten aus der csv in die Tabelle importiert.

Ich brauche die Daten auch in diesem YYYY-MM-DD HH24:MI:SS Format.

Der Developer liefert bei der Vorschau auch noch das richtige Format, aber in der csv steht bereits das falsche Format. Was mache ich falsch? Großartig ändern kann ich zumindest beim Export nix:(

Bin dankbar für jeden Rat!

Link zu diesem Kommentar
Auf anderen Seiten teilen

ganz einfach, developer aus.

cmd auf

und dann mal schön langsam import und export lernen, oder impdp und expdp.

Der Developer macht beim Export immer kappes draus, ich weis auch net warum.

Aber wenn du wirklich dinge importieren und exportieren willst, bist du total auf dem Holzweg, denn das geht besser und schneller und stressfreier über eine .bat oder .sh und ner parameterdatei.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Corto,

vielen Dank für deine Antwort!

An impdp und expdp bin ich auf meiner Suche im Web auch gestoßen, wirklich gute und einleuchtende Beispiele habe ich dazu leider nicht gefunden.

Hast du dazu eine gute Quelle, oder kannst du selbst schnell ein simples Beispiel backen?

Vielleicht noch eine Anmerkung: Ich kann beide Datenbanken nicht miteinander verbinden. D.h. der Export muss auf jeden Fall über irgendeine Zwischendatei gehen.

.bat oder .sh und ner parameterdatei.

Das ist mir nicht klar. Wie genaumeinst du das? Wie kann ich denn mit einem einfachen Skript Daten aus Oracle exportieren? Ist das letzenendes nicht eine Indirektion, da ich doch eh PL/SQL verwenden müsste. Nur halt im bat oder sh Skript.

Oder habe ich dich hier gänzlich falsch verstanden?

Bearbeitet von Helios Co.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm was exp anbetrifft bin ich nun durchgestiegen. Eigentlich recht simpel. Hier ein Beispiel für die Nachwelt:


exp dbuser/userpassword FILE=/home/expdat.dmp TABLES=tablename

dbuser und userpassword sind wie die Namen schon sagen, der User dem die Tabelle gehört und sein Passwort.

Das File wird automatisch generiert, man kann hier folglich einen freien Namen wählen. Bei Tables gibt man die Tabelle(n) an. Bei mehreren Tabellen einfach in Klammen setzen und durch Komma trennen.

Den imp Befehjl habe ich noch nicht ausprobiert. Sobald ich soweit bin, werde ich einen Nachtrag schreiben.

Bearbeitet von Helios Co.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Helios,

sry ich hatte noch keine Zeit dir zu Antworten, aber wie ich sehe hast du dir das meiste schon selbst angelesen.

imp und exp sind tolle werkzeuge - soviel vorweg.

impdp und expdp sind sogar noch toller - da schneller und einfacher.

Für genau deinen Fall allerdings bietet exp die funktion an, einfach per remote die daten zu exp'en und auf die eigene PLatte das image (aka dumpfile) zu schreiben...

die Optionen von imp und exp steuert man am besten durch Parameterfiles.

hier meine parameterfile für einen export übers netz:

:\exp parfile=par.txt

inhalt par.txt:


userid='user/passwort@quelldb'

file=Export_tab1-3.dmp

log=Export_tab1-3.log

indexes=n

rows=y

TABLES=(tab1,tab2,tab1)

GRANTS=N

STATISTICS=none

die optionen selbst kannst du googlen, diese hier waren für große datenmengen, daher nur die row=y. im import wird statt exp natürlich imp aufgerufen mit folgendem parfile:
userid='user/pass@Zieldatenbank'

file=Export_tab1-3.dmp

log=Import_tab1-3.log

indexes=n

rows=y

FROMUSER=quelluser

TOUSER=zieluser

IGNORE=y

GRANTS=N

STATISTICS=none

recordlength=65535

Commit=N

skip_unusable_indexes=y

TABLES=(tab1,tab2,tab3)

die wenigsten optionen sind nötig um einen einfachen export zu machen, dieses Beispiel waren mehrere Gigabyte daten, darum die parameter zum ignorieren oder die recordlength & co...

hoffe ich konnte helfen, frag ruhig wenn dir was unklar ist.

Falls andere DBAs hier reinschauen und mir noch tipps für große importe geben können, immer her damit :)

Die frage ist immer nur: kann der eine DB Server den anderen per TNSping erreichen? wenn ja, einfach über netz nen export machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...