Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
je fais face à un soucis. J'aimerais charger dans Qlikview tous les fichiers présents sur un serveur ftp. Mon script fonctionne pour un seul fichier mais pas pour tous les fichiers.
Voici le script :
Directory;
//On charge une table
TABLE_AEL:
LOAD *
FROM
'ftp://USERID:MDP@HOTE_FTP/Qlikview/AEL/OptinAEL_*.csv'
(txt, utf8, embedded labels, delimiter is ';', msq);
Il semble que l'étoile ne soit pas prise en compte comme la suite du nom de fichier.
Auriez-vous une solution?
Cordialement,
Simon
Le même post sans le "lien" qui provoque l'intervention du modérateur :
- Créer un fichier avec extension bat RECUP_FILE.bat, par exemple (remplacer RECUP_FILE par ce que tu veux) qui contient cette ligne :
ftp -s:SERVEUR.ftp
- Créer un fichier de paramètres SERVEUR.ftp (remplacer SERVEUR par ce que tu veux) qui contient les lignes suivantes :
open xxx.xxx.xxx.xxx
yyyy
zzzz
prompt
lcd c:\dossierdetonpc
cd dossierdetonftp
mput *
quit
- xxx.xxx.xxx.xxx c'est l'adresse ip de ton ftp
- yyyy c'est le login
- zzzz c'est le mot de passe
- le lcd change le dossier courant sur ton pc
- le cd change le dossier courant sur ton ftp (ne pas confondre les deux)
- mget * dans cet exemple permet de copier tout le contenu de ton dossier serveur sur ton répertoire local
- il suffit d'exécuter le RECUP_FILE.bat
Bonjour,
Il faut que tu fasses une boucle. Pour cela nomme tes fichiers sur le ftp avec un chiffre à la fin.
Par exemple :
- OptinAEL_1.csv
- OptinAEL_2.csv
...
- OptinAEL_10.csv
Ensuite dans ton script :
// charger les fichiers à partir du ftp
Set a=1;
Do while a<10 // changer ce chiffre en fonction du nombre de fichier
LOAD *
FROM
'ftp://USERID:MDP@HOTE_FTP/Qlikview/AEL/OptinAEL_$(a).csv'
(txt, utf8, embedded labels, delimiter is ';', msq);
Let a=a+1;
Loop
Kevin
Bonjour,
Il faut que tu fasses une boucle. Pour cela nomme tes fichiers sur le ftp avec un chiffre à la fin.
Par exemple :
- OptinAEL_1.csv
- OptinAEL_2.csv
...
- OptinAEL_10.csv
Ensuite dans ton script :
// charger les fichiers à partir du ftp
Set a=1;
Do while a<10 // changer ce chiffre en fonction du nombre de fichier
LOAD *
FROM
Chemin vers ton FTP/OptinAEL_$(a).csv
(txt, utf8, embedded labels, delimiter is ';', msq);
Let a=a+1;
Loop
Kevin
Bonjour,
Si tu as des contraintes de nommage, tu peux peut être utiliser une boucle comme celle ci :
for each File in filelist ('ftp://USERID:MDP@HOTE_FTP/Qlikview/AEL/OptinAEL_*.csv')
TABLE_AEL:
LOAD *
FROM
'ftp://USERID:MDP@HOTE_FTP/Qlikview/AEL/$(File).csv'
(txt, utf8, embedded labels, delimiter is ';', msq);
next File;
Pour debugger, regarde le contenu de la variable File pour vérifier que la fontion filelist() renvoie bien tous tes fichiers.
Effectivement, la solution de Christophe sera bien si tu n'as pas normé tes fichiers.
Tu peux même compléter avec les extensions de fichier voulues.
// Exemple 2 - Liste de tous les fichiers liés à QV sur le disque
sub DoDir (Root)
for each Ext in 'qvw', 'qvo', 'qvs', 'qvt', 'qvd'
for each File in filelist (Root&'\*.' &Ext)
Load '$(File)' as Name, FileSize( '$(File)' ) as
Size, FileTime( '$(File)' ) as FileTime
autogenerate 1;
next File
next Ext
for each Dir in dirlist (Root&' \*' )
call DoDir (Dir)
next Dir
end sub
call DoDir ('C:')
Kevin
Bonjour,
merci pour votre réponse.
J'avais déjà essayé de faire ça mais ça ne fonctionne pas il ne récupère rien. Quand je debug, File = _NULL_.
Le seul moyen que j'ai pour l'instant trouvé est de charger une liste des noms des fichiers présents sur le ftp via un fichier txt qui se situe pour l'instant sur mon ordinateur. En revanche cette liste est manuelle et le but est que tout soit automatisé pour ne pas avoir à intervenir dès qu'un fichier est ajouté sur le ftp.
Ton chemin est variable en fonction des users etc. ?
Si oui il faut faire comme cela :
'ftp....USERID&':'&MDP&'@'&HOTE_FTP/Qlikview/AEL/OptinAEL_$(a).csv'
Ps: remplace les ... par ://. J'ai fait ça pour ne pas être en attente de modération
Kevin
Non les userid, mot de passe, et hote sont toujours les mêmes.
Seule la fin du nom de fichier varie.
Si tu rajoute filename ça donne quoi ? :
LOAD *, filename()
FROM comme tu l'avais fait avec * dans ton premier post
Kevin
Ca ne marche pas, une erreur s'affiche dès lors que l'ont met une * dans le FROM.