Le forum (ô combien francophone) des utilisateurs de Powerbuilder.






Salut à tous,
Je viens pour demander comment insérer le contenue d'un fichier dans un seul champs de ma table oracle.
Le problème que j'ai rencontré c'est qu'il insère seulement le premier ligne mais les restes non.
A noter : le texte de mon fichier est un message de type string que je voulais l'insérer dans le champs de type Long.
merci d'avance
Dernière modification par mattdamon (08-05-2008 11:16:16)
Hors ligne








Bonjour,
Peux-tu nous fournir la syntaxe que tu utilises pour alimenter ton fichier ?

Hors ligne






En fait, j'ai utilisé les propriétés de fichier (fileopen, file read et file close), et la chaine des caractères que j'ai la récupéré lors de lire de fichier, j'ai l'inséré dans un champs de ma table.
Hors ligne










tu peux mettre ton code ?
Pourquoi ne pas utiliser une DW comme ici ?
Hors ligne






Bonjour à tous,
Je doit mettre le contenue de mon fichier dans ma table oracle, c'est pas l'inverse !!!
La totalité de message doit être insérer dans un seul champs de la table, Ça ce que je voulais faire.
@+
Hors ligne
oui, donc tu peux passer via un importfile et un update() de la datawindow.

Hors ligne






Voici un bout de code de ce que je voulais faire :
integer li_FileNum String ls_Emp_Input li_FileNum = FileOpen("C:\DEPT\EMPLOYEE.txt", StreamMode!, Write!, LockWrite!, Replace!) FileRead(li_FileNum, ls_Emp_Input) FileClose(li_FileNum) INSERT INTO Ma_table (champs1) VALUES (:ls_Emp_Input) ; commit;
Le fichier que je veut l'insérer a une taille > à 7000 lignes
Le problème que j'ai rencontré c'est qu'il insère dans champs1 seulement la première ligne de fichier !!!
parce que en fait, mon fichier s'écrit sur plusieurs lignes !!!
Est ce qu'il faut écrire un code pour transformer tout le texte de mon fichier seulement sur une seule ligne ou bien il y a eu une astuce ou quoi ?
Que ce que je doit faire ?
A+
Dernière modification par mattdamon (08-05-2008 11:13:09)
Hors ligne














Petite question : l'aide en ligne est-elle fournie avec ta version de PB ?
Le cas échéant : + File functions (FileReadEx...)
NB : comment utiliser la balise code=pb, merci de reformater ton message
Hors ligne






Salut,
La solution que j'ai choisi est de concaténer le texte puis l'insérer dans le champs.
merci
Hors ligne











Bonjour,
Juste un petit conseil:
La grande spécificité de PB, c'est la datawindow.
Tu as toujours intérêt à l'utiliser pour tes besoins car c'est vraiment un outil extrêmement puissant.
Dans le cas présent, la solution préconisée par Pick est la plus simple à mettre en oeuvre:
Pas de code SQL de mise à jour à créer (génération automatique), importation très facile des données,
portabilité sur une BDD simplifiée, etc...
Donc, prends bien le temps d'étudier l'aide PB sur tout ce qui concerne la datawindow:
Ca ne peut que t'être profitable.
Bonne journée
Hors ligne








On reprend tout depuis le début.
1) Si tu as un gros fichier à importer dans ta base Oracle, la meilleure solution n'est pas d'utiliser PB mais les outils Oracle.
Pour une raison simple : en déposant le fichier sur le serveur et en l'important directement, tu t'affranchi des problématiques réseaux
SQL Loader
2) Fileread est limité à 32k, soit 32000 caractères.
Utilise FileReadEx qui n'est pas limité
Enfin quel est le type de ta colonne sous Oracle ?
Ta solution ne peut fonctionner qu'avec Varcher, mais là on a une limite à 2000 ou 4000 caractères
Si c'est un BLOB, tu dois utiliser Updateblob
Hors ligne






Salut,
shahin a écrit:
Enfin quel est le type de ta colonne sous Oracle ?
La colonne de ma table est de type Long.
shahin a écrit:
Ta solution ne peut fonctionner qu'avec Varcher, mais là on a une limite à 2000 ou 4000 caractères
justement, Au début j'ai déclaré mon champs varchar2 mais le problème c'est que ce type ne supporte que maximum 4000 caractères, alors pour cela que j'ai changé au type long qui peut atteindre 4Go de taille.
En fin de compte, je vais choisir la solution qui consiste à faire le traitement au niveau de serveur oracle et non pas au niveau de PowerBuilder.
Dernière modification par mattdamon (09-05-2008 19:49:41)
Hors ligne