Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/08/2008, 14h41   #1
Membre à l'essai
 
Inscription : mars 2004
Messages : 122
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 122
Points : 20
Points : 20
Par défaut Problème formattage avec sqlldr

Bonjour,

J'ai un fichier délimiter avec ; de 3 champs dont un est une date. Le format ressemble à ceci :

User ID; Client ID; Creation Time;
profilsix@si.com;510169216;20080219190936.000000Z

Le probleme c'est le creation time. Comme vous pouvez voir c'est un format yyyymmddhhmiss.xxxxxx

je veux utiliser un sqlldr du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
 
LOAD DATA 
INFILE * 
TRUNCATE 
INTO TABLE MRKT_PORTEFOLIO_LDAP
 FIELDS TERMINATED BY ";" 
 TRAILING NULLCOLS
(User_ID,
client_id,
creation date
Donc j'ai 2 probleme, je veux loader le creation time dans un champs date en laissant tomber les chiffre apres le . j'avais penser faire un substr mais comment?

et l'autre c'est qu'il me dit que les heures doivent etre entre 1 et 12... mais moi c'est du 24h... j'imagine qu'en lui spécifaint le format... je vais pouvoir lui spécifier que c'est du 24...

j'ai essayer plusieurs choses et ca ne marche pas... pouvez vous m'aider svp

merci
juin29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 15h31   #2
Membre émérite
 
Inscription : août 2008
Messages : 835
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 835
Points : 823
Points : 823
Salut,
Pour le problème de l'affichage des heures sur 24, je crois qu'il faut ecrire ta ligne comme ça :
Code :
creation DATE 'YYYYMMDDhh24miss'
J'ai jamais testé ceci dit.
Snipah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 16h22   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Applying SQL operators to fields
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 18h54   #4
Membre à l'essai
 
Inscription : mars 2004
Messages : 122
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 122
Points : 20
Points : 20
J'ai essayer de mettre

Code :
1
2
 
creation date "TO_DATE(substr(:creation,1,14), "YYYYMMDDhh24")"
ca ne marche pas non plus... j'ai regarder la doc applying sql... mais y a pas le cas que je cherche.

Je ne dois pas etre loin avec ca... non?
juin29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 19h33   #5
Membre Expert
 
Inscription : août 2008
Messages : 1 276
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 276
Points : 1 936
Points : 1 936
Salut,

Essaie comme ça plutôt :

Code :
1
2
3
4
5
6
7
8
LOAD DATA INFILE * 
TRUNCATE 
INTO TABLE MRKT_PORTEFOLIO_LDAP
 FIELDS TERMINATED BY ";" 
 TRAILING NULLCOLS
(User_ID,
client_id,
creation "TO_DATE(substr(:creation,1,14), 'YYYYMMDDhh24miss')")
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 20h32   #6
Membre à l'essai
 
Inscription : mars 2004
Messages : 122
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 122
Points : 20
Points : 20
ca ne fonctionne pas

j'ai essayer quelques chose comme ca :

Code :
1
2
 
creation date "YYYYMMDD" "substr(:creation,1,8)"
Record 2: Rejected - Error on table MRKT_PORTEFOLIO_LDAP, column CREATION.
ORA-01830: date format picture ends before converting entire input string

c'est comme si il ne faisait pas le substr... ca vous dit quelques choses?
juin29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/08/2008, 21h01   #7
Membre Expert
 
Inscription : août 2008
Messages : 1 276
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 276
Points : 1 936
Points : 1 936
Quel est le nom de ta colonne?
creation, creation_date?
Ne me dis pas que c'est "creation date", au quel cas utilise des double quote pour l'identifier (pas tester mais je pense que ça doit marcher)

Le format de la date doit être écrit entre single quote.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 06h44   #8
Membre chevronné
 
Avatar de Z3phur
 
Homme loic
Administrateur de base de données
Inscription : décembre 2007
Messages : 673
Détails du profil
Informations personnelles :
Nom : Homme loic
Âge : 37
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Industrie

Informations forums :
Inscription : décembre 2007
Messages : 673
Points : 773
Points : 773
Oui c'est bizarre car avec cette syntaxe cela marche très bien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
LOAD DATA 
-- Integration données de la table artisan
INFILE 'D:\TESTS\table1.txt'
TRUNCATE
INTO TABLE TABLE1
FIELDS TERMINATED BY ";" 
 TRAILING NULLCOLS
(
USER_ID,
CLIENT_ID,
CREATE_DATE "TO_DATE(substr(:create_date,1,14), 'YYYYMMDDhh24miss')"
)
Z3phur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 13h43   #9
Membre à l'essai
 
Inscription : mars 2004
Messages : 122
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 122
Points : 20
Points : 20
merci ca marche maintenant... je crois que je m'entetais à mettre un type date à ma colonne...
juin29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h59.


 
 
 
 
Partenaires

Hébergement Web