Informix, insert into without transactions <geloest>

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Informix, insert into without transactions <geloest>

Beitrag von roli » 28.06.2006 11:37:43

Hallo,

ich habe gerade ein Problem mit einer Informix-DB.
Ich muss Daten aus einer Datei in eine Tabelle laden. Dabei kommt es immer wieder zu constraint violations, da die Datei auch Saetze enthaelt die bereits in der Tabelle enthalten sind. Ich suche ein Statement, das mir alle Saetze aus der Datei in die Tabelle laedt, die Doubletten aber ignoriert. Gefunden habe ich bisher Inserting Rows into a Database Without Transactions, leider ist mir nicht klar wie ich das bewerkstelligen soll.

<edit>Link berichtigt</edit>
Zuletzt geändert von roli am 29.06.2006 10:03:30, insgesamt 1-mal geändert.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.06.2006 19:48:11

Dieser Link hat nicht wirklich etwas mit deinem Problem oder einer Lösung deines Problems zu tun. Hier wird etwas dürftig erklärt, daß man sich selber um die Datenbankkonsistenz kümmern muß, wenn die Datenbank Transaktionen nicht verwendet.

Kannst du die Contstraint Violations nicht einfach ignorieren ?


Gruß
gms

Maj0r
Beiträge: 476
Registriert: 08.12.2003 14:52:39
Wohnort: Jüchen, Ne
Kontaktdaten:

Beitrag von Maj0r » 28.06.2006 19:56:04

Das wird Dich nicht weiter bringen, ist was komplett anderes.

Bei einer Oracle-DB kann man die Constraints abschalten.
Dann kannst Du Deine Inserts machen und musst halt schauen, dass Du alle Verletzungen "geheilt" hast, bevor Du die Constraints wieder aktivierst.

Wie das bei anderen DBs ist, weiss ich nicht. Ich gehe aber davon aus, dass es da den gleichen Mechanismus geben wird.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.06.2006 20:27:09

Maj0r hat geschrieben: Wie das bei anderen DBs ist, weiss ich nicht. Ich gehe aber davon aus, dass es da den gleichen Mechanismus geben wird.
yep, habe gerade die Doku durchstöbert und genau diesen Mechanismus gefunden:
http://publib.boulder.ibm.com/infocente ... qls553.htm.

Am einfachsten wird aber wahrscheinlich das Unterdrücken (Ignorieren) der Fehlermeldung sein.
Über eine Zwischentabelle und danach ein "INSERT INTO tabelle T1 SELECT columns FROM zwischentabelle Z WHERE NOT EXISTS (SELECT 1 FROM tabelle T2 WHERE T2.id = Z.id )" gehts natürlich auch

Gruß
gms

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 28.06.2006 22:23:30

Hi Leute,

ich werde morgen mal checken ob's so geht. Ist halt 'n Problem was ich auf der Arbeit habe/hatte. Bei den ca. 1 Mio Records die ich heute geladen hatte, waren es zum Glueck nicht zuviele Ueberschneidungen, aber da das erst der Anfang war, ist mir jede Loesung sehr willkommen, da es sicher nicht besser wird.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 29.06.2006 09:32:25

Hi,
gms hat geschrieben:yep, habe gerade die Doku durchstöbert und genau diesen Mechanismus gefunden:
http://publib.boulder.ibm.com/infocente ... qls553.htm.
das ist die "allgemeine" Suchseite, aber wonach hattest du den gesucht?
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.06.2006 09:42:33

Hoppala, diesen Link wollte ich posten:
http://publib.boulder.ibm.com/infocente ... qls129.htm

den kannst du auch noch brauchen:
http://publib.boulder.ibm.com/infocente ... qls725.htm

Du kannst also das Constraint disablen, die Rows einfügen und danach wie im ersten Link beschrieben das Constraint wieder enablen

Gruß
gms

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 29.06.2006 10:00:47

Hi gms,

sieht vielversprechend aus.
Ich hatte zwar urspruenglich nach einer Loesung gesucht die dem "badfile" von oracles sqlldr entspricht, aber gefunden habe ich bislang nichts. Diese Loesung haette halt den Vorteil das ich 99,x% der Daten geladen haette, und ich mich anschliessend persoenlich um die Patienten aus dem Badfile kuemmern koennte.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Antworten