Wie füllen Sie eine timestamp-Feld mit dem aktuellen timestamp mit Oracle Sql-Loader
Bin ich beim Lesen einer pipe-delimited-Datei mit SQL-Loader und Auffüllen möchten eine LAST_UPDATED Feld in der Tabelle bin ich Auffüllen. Meine Control Datei sieht wie folgt aus:
LOAD DATA
INFILE SampleFile.dat
REPLACE
INTO TABLE contact
FIELDS TERMINATED BY '|'
OPTIONALLY ENCLOSED BY '"'
(
ID,
FIRST_NAME,
LAST_NAME,
EMAIL,
DEPARTMENT_ID,
LAST_UPDATED SYSTIMESTAMP
)
Für die LAST_UPDATED Bereich, die ich ausprobiert habe SYSTIMESTAMP und CURRENT_TIMESTAMP und weder die Arbeit. Der DATEPART-aber funktioniert gut, aber doesn ' T geben Sie mir die Zeit des Tages.
Ich bin ganz neu auf SQL-Loader, so dass ich wirklich sehr wenig wissen über das, was es ist oder ist nicht in der Lage. Danke.
InformationsquelleAutor der Frage Sen | 2009-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht, die folgenden:
CURRENT_TIMESTAMP [ (Genauigkeit) ]
Dazu in SQLLDR, die Sie brauchen, um den AUSDRUCK in der CTL-Datei, so dass SQLLDR weiß, zur Behandlung der Ruf als SQL.
Ersetzen:
mit:
InformationsquelleAutor der Antwort RC.
Nahm ich RC ' s beantworten, weil letztlich er beantwortet, was ich gefragt wurde, aber meine mangelnde Vertrautheit mit einigen der von Oracle tools führte mich machen diese schwieriger als es sein sollte.
Ich habe versucht, der SQL*Loader zur Aufnahme eines timestamp anstatt nur ein Datum. Wenn ich in der DATEPART -, und machte dann einen select auf die Tabelle war es nur die Auflistung der das Datum (05-AUG-09).
Dann versuchte ich RC ' s Methode (in den Kommentaren) und es funktionierte. Aber trotzdem, wenn ich wählen Sie auf dem Tisch ich hab das gleiche Datumsformat. Dann trat Sie zu mir, könnte es nur werden abgeschnitten, der Rest für Anzeige Zwecke. So dann habe ich ein:
Und es erscheint dann alles. Dann ging ich zurück in den control-Dateien und verändert es zurück zu der DATEPART-und lief die gleiche Abfrage und sicher genug, die HH:MI:SS dort war und genau.
All dies geschieht in SqlDeveloper. Ich weiß nicht, warum er standardmäßig dieses Verhalten. Auch das, was mich warf, sind die folgenden zwei Aussagen in sqldeveloper.
InformationsquelleAutor der Antwort Sen
In Sql Developer laufen:
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
und dann überprüfen Sie es mit
SELECT DATEPART-VON-DUAL -
InformationsquelleAutor der Antwort vas