Après, il faut s'assurer que les données correspondent bien au format attendu, vérifier l'ordre des colonnes, se demander pourquoi on utilise quatre fois la même donnée pour alimenter des colonnes différentes...
Après, il faut s'assurer que les données correspondent bien au format attendu, vérifier l'ordre des colonnes, se demander pourquoi on utilise quatre fois la même donnée pour alimenter des colonnes différentes...
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
J'ai fait la même opération en limitant les colonnes à:
avec le .ctl suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 create table T_RECTIF (DATE_FICHIER varchar2 (200), CD_PAYS varchar2 (200), DT_MVT date, CD_MVT varchar2 (200)) ;
et tout s'est bien passé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 options (skip=1) load data infile '2017_02.dat' append into table T_RECTIF fields terminated by ';' (DATE_FICHIER, CD_PAYS, DT_MVT "to_date(:DT_MVT,'yyyymmdd')", CD_MVT)
J'ai donc recréé la table avec toutes les colonnes et en ajoutant options (skip=1) dans le .ctl pour éviter de charger l'en-tête du fichier qui semblait donc tout bloquer mais j'obtiens finalement un autre message d'erreur:
Enregistrement 1 : Rejeté - Erreur sur table T_RECTIF
ORA-00604: une erreur s'est produite au niveau SQL récursif 1
ORA-01830: Le modèle du format de date se termine avant la conversion de la chaîne d'entrée entière
Microsoft SQL Server Management Studio v17.9.1
Il te reste la solution de recréer la table dans sa structure complète et faire des tests en ajoutant les champs un par un dans le fichier de contrôle.
Tu finiras par trouver à quel niveau ça coince.
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Fastidieuse mais néanmoins efficace technique.
J'ai donc constaté que tout se passe bien jusqu'à la 2ème instruction concernant le chargement d'un format date.
Jusqu'à cette étape, tout va bien :
Et dès que j'ajoute une nouvelle ligne avec une date (année en l’occurrence)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 options (skip=1) load data infile 'Rectif.txt' append into table T_IMMAT_AAA_RECTIF_V2_NEW fields terminated by ';' (DATE_FICHIER, CD_PAYS, DT_MVT "to_date(:DT_MVT,'yyyymmdd')", CD_MVT, VN_VO, CIV, PRENOM, NOM, NOM_USAGE, ADRESSE, LIGNE02, LIGNE03, LIGNE04, LIGNE05, CD_POSTAL, COMMUNE, LIGNE06, CD_CANT, CD_INSEE, CD_DEPT, CD_IRIS, CAT_CLI_N_O, CD_CSP,j'obtiens donc ce message:
Code : Sélectionner tout - Visualiser dans une fenêtre à part AN_NAISS "to_date(:DT_MVT,'yyyy')")
Enregistrement 1 : Rejeté - Erreur sur table T_IMMAT_AAA_RECTIF_V2_NEW.
ORA-00604: une erreur s'est produite au niveau SQL récursif 1
ORA-01830: Le modèle du format de date se termine avant la conversion de la chaîne d'entrée entière
\\MAXIMUM ERROR COUNT EXCEEDED - Les statistiques données ci-dessus résultent d'une exécution partielle.
Microsoft SQL Server Management Studio v17.9.1
Cela me semble tout à fait normal...
Est-ce que tu veux réellement alimenter la colonne AN_NAISS de ta table avec le 3ème champ de ton fichier, celui que tu as déjà utilisé pour renseigner la colonne DT_MVT ?
D'autant que son contenu fait 8 caractères (il a pu être converti sans problème en date au format 'yyyymmdd') et que tu cherches à le convertir avec un format limité à 4 caractères seulement.
Que dit le message d'erreur déjà ?ORA-01830: Le modèle du format de date se termine avant la conversion de la chaîne d'entrée entière
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Je ne comprends pas comment les 2 champs peuvent arriver dans la même colonne vu que j'en ai prévu une par chaque:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 create table T_IMMAT_AAA_RECTIF_V2_NEW (DATE_FICHIER varchar2 (200), CD_PAYS varchar2 (200), DT_MVT date, CD_MVT varchar2 (200), VN_VO varchar2 (200), CIV varchar2 (200), PRENOM varchar2 (200), NOM varchar2 (200), NOM_USAGE varchar2 (200), ADRESSE varchar2 (200), LIGNE02 varchar2 (200), LIGNE03 varchar2 (200), LIGNE04 varchar2 (200), LIGNE05 varchar2 (200), CD_POSTAL varchar2 (200), COMMUNE varchar2 (200), LIGNE06 varchar2 (200), CD_CANT varchar2 (200), CD_INSEE varchar2 (200), CD_DEPT varchar2 (200), CD_IRIS varchar2 (200), CAT_CLI_N_O varchar2 (200), CD_CSP varchar2 (200), AN_NAISS date)
Microsoft SQL Server Management Studio v17.9.1
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Il est vrai que mes connaissances en informatique sont assez réduites mais là j'avais vraiment de la m... dans les yeux !
Au passage, merci de ta patience parce que je suis vraiment un boulet.
J'ai donc maintenant réussi à charger intégralement mon fichier mais il y a un dernier problème qui apparaît: le format des dates.
Je m'explique:
apparaît dans la table sous cet aspect: 01/02/2017 (normal)
Code : Sélectionner tout - Visualiser dans une fenêtre à part DT_MVT "to_date(:DT_MVT,'yyyymmdd')"
apparaît dans la table sous cet aspect: 01/03/1954 (problématique car cela peut laisser penser que la date de naissance est vraiment le 01/03 alors que l'on n'en sait rien)
Code : Sélectionner tout - Visualiser dans une fenêtre à part AN_NAISS "to_date(:AN_NAISS,'yyyy')"
apparaît dans la table sous cet aspect: 23/09/1988 (normal)
Code : Sélectionner tout - Visualiser dans une fenêtre à part DT_CG "to_date(:DT_CG,'yyyymmdd')"
apparaît dans la table sous cet aspect: 01/09/1988 (il ne devrait apparaître que l'année et le mois)
Code : Sélectionner tout - Visualiser dans une fenêtre à part ANMO_MEC "to_date(:ANMO_MEC,'yyyymm')"
Comment serait-il possible que, lors du chargement, les formats to_date soient respectés et non pas systématiquement transformés en dd/mm/yyyy ?
Microsoft SQL Server Management Studio v17.9.1
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager