Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Fehlermeldung beim SQL-Loader

Empfohlene Antworten

Hallo liebe Forengemeinde,

ich experimentiere gerade mit dem SQL-Loader herum. Also, ich mache folgendes:

Datei Stammdaten.ctl steht folgendes:

LOAD DATA

INFILE 'Stammdaten.dat'

INSERT

INTO TABLE Stammdaten

FIELDS TERMINATED BY';'

(

Nummer,

NAME1,

NAME2,

STRASSE,

PLZ,

ORT,

TELEFON,

FAX,

ID,

SONSTIGES,

ANSP_NAME,

ANSP_TEL,

ANSP_NAME1,

ANSP_TEL1,

)

begindata

Dann rufe ich den SQL-Loader auf:

sqlldr benutzer/db@db1 control = D:\Pfad\Stammdaten.ctl

Nun bekomme ich folgende Fehlermeldungen:

SQL*LOADER-500: Datei(Stammdaten.dat) kann nicht geöffnet werden

SQL*LOADER-553: Datei nicht gefunden

SQL*LOADER-509: Systemfehler: Das System kann die angegebene Datei nicht finden

Was kann das sein? Die Datei heisst wirklich so und liegt tatslächlich unter D:\Pfad\.

  • Autor

Also, wenn ich die Dateien direkt in das Verzeichnis Oracle/bin abspeicher, bekomme ich folgende Fehlermeldung:

SQL*LOADER-275: Daten sind in Kontrolldatei, aber "INFILE*" wurde nicht angegeben

Hat jemand dafür eine Lösung oder einen Rat?

1. dein controlfile ist fehlerhaft (komma als feldtrenner nach letztem feld)

2. du *solltest* im controlfile den absoluten pfad (oder ein INFILE in einen im PATH enthaltenen pfad) angeben.

sql loader geht folgendermassen (u.a. in dieser reihenfolge) vor:

1. credentials überprüfen

2. controlfile auf existenz prüfen

3. zieltabellen und -felder prüfen

4. INFILE prüfen

s'Amstel

  • Autor

Also, folgender "Fortschritt":

Die Datei stammdaten.ctl sieht jetzt wie folgt aus:

LOAD DATA

INFILE 'D:\Pfad\Stammdaten.dat'

INSERT

INTO TABLE Stammdaten

FIELDS TERMINATED BY';'

TRAILING NULLCOLS

(

Nummer,

NAME1,

NAME2,

STRASSE,

PLZ,

ORT,

TELEFON,

FAX,

ID,

SONSTIGES,

ANSP_NAME,

ANSP_TEL,

ANSP_NAME1,

ANSP_TEL1

)

Ich rufe den SQL-Loader auf:

sqlldr benutzer/db@db1 control = Stammdaten.ctl

Commit-Punkt erreicht - Anzahl der logischen Datensätze 64

Was mache ich da jetzt falsch?:(

es würde sich jetzt direkt anbieten, ins log zu sehen, hm? ;)

dort findest du die zusammenfassung, wieviele datensätze als BAD und wieviele als DISCARD markiert sind.

s'Amstel

  • Autor

@ Amstelchen

In die Tabelle wurde nichts importiert und an die Log-Datei komme ich nicht ran. "UN-Philosopie". Nehme einem Entwickler sämtliche Admin-Rechte. Was bedeutet denn die Fehlermeldung? Kann das am Semikolon liegen oder am Punkt?

  • Autor

Ich habe da noch eine andere Idee, an der es liegen kann:

Ich habe Spalten mit Number(1,3), aber ich importiere hier rein Werte z. B. 1,33. Kann es daran liegen? Dann sollte sich das Prob eigentlich löschen, wenn ich den Datentyp auf Number ändere.

In die Tabelle wurde nichts importiert und an die Log-Datei komme ich nicht ran.

kann ich mir nicht vorstellen; sql loader legt das logfile normalerweise im selben pfad wie das INFLE an.

häng sqlldr zusätzlich noch zu control= ein log= dran, dann kannst du den pfad vom log steuern.

Nehme einem Entwickler sämtliche Admin-Rechte.

zum anlegen eines logfiles braucht man keine adminrechte, wenn man sql loader ausführen kann/darf.

Spalten mit Number(1,3)

das ist unüblich, und meist unangebracht, da die gesamtzahl der stellen kleiner ist als die nachkommagenauigkeit.

Dann sollte sich das Prob eigentlich löschen, wenn ich den Datentyp auf Number ändere

richtig.

s'Amstel

  • Autor

ich denke, dass Prob hat sich erledigt. Aber nochmal zur log-Datei. Da komm ich tatsächlich nicht ran. Sobald ich die Log-Datei aufrufen möchte, bekomme ich die Fehlermeldung, dass ich keine ausreichende Berechtigung hierzu habe.:rolleyes:

dann leite das logfile mittels log= in eine datei um, die in einem von dir lesbaren verzeichnis zum liegen kommt. wenn du die sqlldr.exe aufrufen kannst, hast du diese option ja immerhin.

s'Amstel

Commit-Punkt erreicht - Anzahl der logischen Datensätze 64

Was mache ich da jetzt falsch?

Hmm eigentlich nichts. Das ist eigentlich die Ausgabe, wenn Daten importiert wurden. Bist Du sicher, dass Du in der richtigen Tabelle im richtigen Schema nachgesehen hast?

Dim

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.