Pb syntaxe avec SQL*Loader
stefy
-
chuka Messages postés 965 Date d'inscription Statut Membre Dernière intervention -
chuka Messages postés 965 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je lance sqloader de la facon suivante :
sqlldr user/pawd@DB fichier.ctl ./tmp/fichier.log
mon fichier control se présente de la facon suivante :
LOAD DATA
INFILE fichier_de_donnee.TXT
BADFILE fichier_toto.bad
REPLACE
INTO TABLE gfft20
(
...
...
)
mon problème est que j'aimerais que mon fichier de données soit passé en paramètre. J'ai essayé dans ma ligne de commande de rajouter DATA=mon_fichier mais je ne sais pas comment le récupérer dans mon fichier de controle.
je ne suis pas sure d'avoir été tres claire ...
Merci de votre aide car je patauge un peu !
Je lance sqloader de la facon suivante :
sqlldr user/pawd@DB fichier.ctl ./tmp/fichier.log
mon fichier control se présente de la facon suivante :
LOAD DATA
INFILE fichier_de_donnee.TXT
BADFILE fichier_toto.bad
REPLACE
INTO TABLE gfft20
(
...
...
)
mon problème est que j'aimerais que mon fichier de données soit passé en paramètre. J'ai essayé dans ma ligne de commande de rajouter DATA=mon_fichier mais je ne sais pas comment le récupérer dans mon fichier de controle.
je ne suis pas sure d'avoir été tres claire ...
Merci de votre aide car je patauge un peu !
A voir également:
- Pb syntaxe avec SQL*Loader
- Windows loader - Télécharger - Gestion de fichiers
- Logiciel sql - Télécharger - Bases de données
- Requête sql pix - Forum Python
- La syntaxe du nom de fichier de répertoire ou de volume est incorrecte ✓ - Forum Windows 10
- Trouver erreur de syntaxe fichier txt - Forum Windows
1 réponse
Salut,
à part creer un nouveau fichier de control avec un exe (pour l'exemple appelé exemple.exe):
puis dans ton batch faire:
pour windows:
ton_lecteur:
cd ton_chemin
exemple.exe %1
del /Q fichier.ctl
rename fichier1.ctl fichier.ctl
sqlldr user/pawd@DB fichier.ctl ./tmp/fichier.log
et lancer ton batch avec la commande
mon_batch nom_du_fichier_de_donnee.TXT
sinon pour linux:
cd /ton_chemin
./exemple $1
rm fichier.ctl
mv fichier1.ctl fichier.ctl
sqlldr user/pawd@DB fichier.ctl ./tmp/fichier.log
et lancer ton batch avec la commande
./mon_batch nom_du_fichier_de_donnee.TXT
j'espere ca pourra t'aider!!
@+
à part creer un nouveau fichier de control avec un exe (pour l'exemple appelé exemple.exe):
#include <stdio.h> #include <string.h> int main(int argc,char*arg[]) {FILE*pf; FILE*pf1; int i=0; char mot[255]; char rempl[255]; char*infile="INFILE "; pf=fopen("ton_lecteur\\ton_chemin\\\fichier.ctl","r"); pf1=fopen("ton_lecteur\\ton_chemin\\fichier1.ctl","w"); while (!feof(pf)) {fgets(mot,255,pf); if(i==0) {if(strncmp(mot,infile,strlen(infile))==0) { strcpy(rempl,infile); strcat(rempl,arg[1]); fwrite(rempl,1,strlen(rempl)*sizeof(char),pf1); fwrite("\n",1,sizeof(char),pf1); i++; } else fwrite(mot,1,strlen(mot)*sizeof(char),pf1); } fclose(pf); fclose(pf1); return 1; }
puis dans ton batch faire:
pour windows:
ton_lecteur:
cd ton_chemin
exemple.exe %1
del /Q fichier.ctl
rename fichier1.ctl fichier.ctl
sqlldr user/pawd@DB fichier.ctl ./tmp/fichier.log
et lancer ton batch avec la commande
mon_batch nom_du_fichier_de_donnee.TXT
sinon pour linux:
cd /ton_chemin
./exemple $1
rm fichier.ctl
mv fichier1.ctl fichier.ctl
sqlldr user/pawd@DB fichier.ctl ./tmp/fichier.log
et lancer ton batch avec la commande
./mon_batch nom_du_fichier_de_donnee.TXT
j'espere ca pourra t'aider!!
@+