Pb syntaxe avec SQL*Loader

stefy -  
chuka Messages postés 980 Statut Membre -
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 !
Configuration: Windows XP
Firefox 3.0.3

1 réponse

  1. chuka Messages postés 980 Statut Membre 379
     
    Salut,
    à 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!!
    @+
    0