OVH Cloud OVH Cloud

Importation CSV urgent

8 réponses
Avatar
Roller0022
Bonjour =E0 tous,
J'ai un projet et je suis bloqu=E9.
J'ai un fichier csv ou chaque ligne repr=E9sente un enregistrement,
chaque champ est s=E9par=E9 par un ;
Ma table windev =E0 les m=EAmes champs que mon fichier csv.
J'ai essayer ce bout de code mais je n'y arrive pas, si vous auriez une
id=E9e ou un exemple.
Je vous remercie d'avance.
Cordialement
Jean Paul

i est un entier
chn est une chaine
ligne est une chaine
sdonnee est une chaine

chn est une chaine =3D fchargetexte(fichiercsv)
pour toute chaine ligne de chn separ=E9e par RC
ligne=3Dremplace(ligne,remplace(sdonnee,caract(34)+caract(34),caract(34))
i=3D0
sdonnee=3Dextraitchaine(ligne,rangpremier,";")
tantque sdonnee<>eot
i++
tableajoute(tableimport)
{"colonne"+i}=3Dsdonnee
.=2E..
sdonnee=3Dextraitchaine(ligne,rangsuivant,";")

fin
fin

8 réponses

Avatar
Roumegou Eric
Roller0022 a formulé la demande :
Bonjour à tous,
J'ai un projet et je suis bloqué.
J'ai un fichier csv ou chaque ligne représente un enregistrement,
chaque champ est séparé par un ;
Ma table windev à les mêmes champs que mon fichier csv.
J'ai essayer ce bout de code mais je n'y arrive pas, si vous auriez une
idée ou un exemple.
Je vous remercie d'avance.
Cordialement
Jean Paul

i est un entier
chn est une chaine
ligne est une chaine
sdonnee est une chaine

chn est une chaine = fchargetexte(fichiercsv)
pour toute chaine ligne de chn separée par RC
ligne=remplace(ligne,remplace(sdonnee,caract(34)+caract(34),caract(34))
i=0
sdonnee=extraitchaine(ligne,rangpremier,";")
tantque sdonnee<>eot
i++
tableajoute(tableimport)
{"colonne"+i}=sdonnee
....
sdonnee=extraitchaine(ligne,rangsuivant,";")

fin
fin



perso je prefere extraire un a un chaque champs et faire un
tableajouteligne mais si tu veux faire tout d'un coup...
et quand tu parles de table windev, c'est bien une tablememoire ?


chn est une chaine = fchargetexte(fichiercsv)
pour toute chaine ligne de chn separée par RC
tableajoute(Table1,remplace(ligne,";",TAB))
fin

Mais ça me semble trop simple par rapport à ton ex de code, mais c'est
conforme à ton énoncé

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Roller0022
Merci de m'avoir répondu Eric,
J'ai testé ton bout de code et j'ai toujours cette erreur dans LIGNE
pour toute chaine ligne de chn separée par RC
----------
J'ai erreur se syntaxe, je ne comprends pas cette erreur.
Si tu pouvais me venir en aide merci
Jean Paul

Roumegou Eric a écrit :

Roller0022 a formulé la demande :
> Bonjour à tous,
> J'ai un projet et je suis bloqué.
> J'ai un fichier csv ou chaque ligne représente un enregistrement,
> chaque champ est séparé par un ;
> Ma table windev à les mêmes champs que mon fichier csv.
> J'ai essayer ce bout de code mais je n'y arrive pas, si vous auriez une
> idée ou un exemple.
> Je vous remercie d'avance.
> Cordialement
> Jean Paul
>
> i est un entier
> chn est une chaine
> ligne est une chaine
> sdonnee est une chaine
>
> chn est une chaine = fchargetexte(fichiercsv)
> pour toute chaine ligne de chn separée par RC
> ligne=remplace(ligne,remplace(sdonnee,caract(34)+caract(34),caract(34 ))
> i=0
> sdonnee=extraitchaine(ligne,rangpremier,";")
> tantque sdonnee<>eot
> i++
> tableajoute(tableimport)
> {"colonne"+i}=sdonnee
> ....
> sdonnee=extraitchaine(ligne,rangsuivant,";")
>
> fin
> fin

perso je prefere extraire un a un chaque champs et faire un
tableajouteligne mais si tu veux faire tout d'un coup...
et quand tu parles de table windev, c'est bien une tablememoire ?


chn est une chaine = fchargetexte(fichiercsv)
pour toute chaine ligne de chn separée par RC
tableajoute(Table1,remplace(ligne,";",TAB))
fin

Mais ça me semble trop simple par rapport à ton ex de code, mais c'est
conforme à ton énoncé

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)


Avatar
Roller0022
Non c'est pour inserer tous les enregistrement de mon fichier csv et
les incorporer dans ma base.
Je ne sais trop comment faire
Jean Paul


Roumegou Eric a écrit :

Roller0022 a formulé la demande :
> Bonjour à tous,
> J'ai un projet et je suis bloqué.
> J'ai un fichier csv ou chaque ligne représente un enregistrement,
> chaque champ est séparé par un ;
> Ma table windev à les mêmes champs que mon fichier csv.
> J'ai essayer ce bout de code mais je n'y arrive pas, si vous auriez une
> idée ou un exemple.
> Je vous remercie d'avance.
> Cordialement
> Jean Paul
>
> i est un entier
> chn est une chaine
> ligne est une chaine
> sdonnee est une chaine
>
> chn est une chaine = fchargetexte(fichiercsv)
> pour toute chaine ligne de chn separée par RC
> ligne=remplace(ligne,remplace(sdonnee,caract(34)+caract(34),caract(34 ))
> i=0
> sdonnee=extraitchaine(ligne,rangpremier,";")
> tantque sdonnee<>eot
> i++
> tableajoute(tableimport)
> {"colonne"+i}=sdonnee
> ....
> sdonnee=extraitchaine(ligne,rangsuivant,";")
>
> fin
> fin

perso je prefere extraire un a un chaque champs et faire un
tableajouteligne mais si tu veux faire tout d'un coup...
et quand tu parles de table windev, c'est bien une tablememoire ?


chn est une chaine = fchargetexte(fichiercsv)
pour toute chaine ligne de chn separée par RC
tableajoute(Table1,remplace(ligne,";",TAB))
fin

Mais ça me semble trop simple par rapport à ton ex de code, mais c'est
conforme à ton énoncé

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)


Avatar
Roumegou Eric
Roller0022 avait soumis l'idée :
Merci de m'avoir répondu Eric,
J'ai testé ton bout de code et j'ai toujours cette erreur dans LIGNE
pour toute chaine ligne de chn separée par RC
----------
J'ai erreur se syntaxe, je ne comprends pas cette erreur.
Si tu pouvais me venir en aide merci
Jean Paul



autant pour moi, LIGNE est un mot clé réservé. Essaie ceci

wligne,wch sont des chaînes
POUR TOUTE CHAINE wligne DE wch SEPAREE PAR RC

FIN

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Roumegou Eric
Roller0022 a présenté l'énoncé suivant :
Non c'est pour inserer tous les enregistrement de mon fichier csv et
les incorporer dans ma base.
Je ne sais trop comment faire
Jean Paul



Attention aux termes alors.

pour HF on parle de fichiers.
Donc tu dois pouvoir utiliser le HimporteTexte, mais le plus simple est
de faire comme ceci

NumCol est un entier
wligne,wch sont des chaînes

je charge mon fichier ds wch ...

POUR TOUTE CHAINE wligne DE wch SEPAREE PAR RC
NumCol=0
HRAZ(MONFIC)
NumCol++;MONFIC.ZONE1=extraitchaine(wligne,NumCol, ";")
NumCol++;MONFIC.ZONE2=extraitchaine(wligne,NumCol, ";")
NumCol++;MONFIC.ZONE3=extraitchaine(wligne,NumCol, ";")



NumCol++;MONFIC.ZONEn=extraitchaine(wligne,NumCol, ";")
Hajoute(MONFIC)
FIN


et pour de très gros imports, si on écrase le fichier le mieux est
d'utiliser un Hecrit(MONFIC,nligne) avec nligne que l'on incrémente et
en fin de traitement on réindexe avec un Hreindexe(MONFIC).

là selon les cas, on va dix fois plus vite.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Roller0022
Oui je comprends bien le code mais j'ai voulu l'éviter à tout prix
car j'ai autrement je vais devoir rentrer 200 champs à la main sachant
que j'ai une vingtaines de bases à traiter.

NumCol++;MONFIC.ZONE1=extraitchaine(wligne,NumCol, ";") multiplié par
200

Je cherche un system pour eviter de rentrer le num de colonne avec la
zone.
Jean Paul

Roumegou Eric a écrit :

Roller0022 a présenté l'énoncé suivant :
> Non c'est pour inserer tous les enregistrement de mon fichier csv et
> les incorporer dans ma base.
> Je ne sais trop comment faire
> Jean Paul
>
Attention aux termes alors.

pour HF on parle de fichiers.
Donc tu dois pouvoir utiliser le HimporteTexte, mais le plus simple est
de faire comme ceci

NumCol est un entier
wligne,wch sont des chaînes

je charge mon fichier ds wch ...

POUR TOUTE CHAINE wligne DE wch SEPAREE PAR RC
NumCol=0
HRAZ(MONFIC)
NumCol++;MONFIC.ZONE1=extraitchaine(wligne,NumCol, ";")
NumCol++;MONFIC.ZONE2=extraitchaine(wligne,NumCol, ";")
NumCol++;MONFIC.ZONE3=extraitchaine(wligne,NumCol, ";")



NumCol++;MONFIC.ZONEn=extraitchaine(wligne,NumCol, ";")
Hajoute(MONFIC)
FIN


et pour de très gros imports, si on écrase le fichier le mieux est
d'utiliser un Hecrit(MONFIC,nligne) avec nligne que l'on incrémente et
en fin de traitement on réindexe avec un Hreindexe(MONFIC).

là selon les cas, on va dix fois plus vite.

--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)


Avatar
Roumegou Eric
Roller0022 avait prétendu :
Oui je comprends bien le code mais j'ai voulu l'éviter à tout prix
car j'ai autrement je vais devoir rentrer 200 champs à la main sachant
que j'ai une vingtaines de bases à traiter.

NumCol++;MONFIC.ZONE1=extraitchaine(wligne,NumCol, ";") multiplié par
200

Je cherche un system pour eviter de rentrer le num de colonne avec la
zone.
Jean Paul



alors le himporteTexte
ou jouer avec des opérateurs d'indirection {}



Roumegou Eric a écrit :




--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)





--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
mat
Roller0022 wrote:
Oui je comprends bien le code mais j'ai voulu l'éviter à tout prix
car j'ai autrement je vais devoir rentrer 200 champs à la main sachant
que j'ai une vingtaines de bases à traiter.

NumCol++;MONFIC.ZONE1=extraitchaine(wligne,NumCol, ";") multiplié par
200

Je cherche un system pour eviter de rentrer le num de colonne avec la
zone.



Bonjour,

on devrait pouvoir faire quelque chose comme le suit (basé sur le code
d'Eric):

MaxCol est entier = // nombre de colonnes; il y a des solutions pour ça

POUR TOUTE CHAINE wligne DE wch SEPAREE PAR RC
HRAZ(MONFIC)
pour NumCol = 1 à MaxCol
{"MONFIC.ZONE"+NumCol,indRubrique} =extraitchaine(wligne,NumCol,
";")
fin
Hajoute(MONFIC)
FIN


Salutations
Mat