[Résolu] Liaison dynamique avec un fichier .csv

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
sebmdp
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 08 juil. 2008 16:31
Localisation : Orleans / France

[Résolu] Liaison dynamique avec un fichier .csv

Message par sebmdp »

Bonjour à toutes & tous,

Ce sujet à été traité en long & en large, mais je ne parviens tj pas à comprendre où est mon erreur...
Je cherche à lier un fichier csv ou txt à une table. Pour cela j'ai suivi tous les conseils que j'ai pu trouvé sur ce site pour arriver ici :

Code : Tout sélectionner

CREATE TEXT TABLE  "testcreate" ("RefEvent" INTEGER NOT NULL PRIMARY KEY, "NomEvent" VARCHAR(50), "DateDébut" Date, "DateFin" DATE, "NbreHeure" NUMERIC, "Taux" NUMERIC, "NomEmployé" VARCHAR(50))
La table est bien crée selon les paramètres définis ci dessus.

Mes fichiers sources ressemblent à ça :
;Event;01/07/08;01/07/08;4;13,50;Jean Jean
Je définis donc la source des données ainsi :

Code : Tout sélectionner

SET TABLE "testcreate" SOURCE "Declas0708.txt;fs=\semi"
La requête est "exécutée avec succès" d'après la fenêtre d'instruction SQL, mais aucune donnée n'est intégrée à ma table... J'ai bien essayé avec un fichier csv, les commandes SOURCE OFF & ON au cas où, mais ss résultat...

Cela pourrait-il provenir du fait que mes fichiers sources ne contiennent pas les valeurs des clefs primaires ? Dans ce cas quel code utiliser pour déclaré la variable INTEGER en auto-valeur sur ma table (IDENTITY je crois ?) ?
Faut-il spécifier qd & comment les données doivent être importées ?
Où serait-ce encore autre chose qui m'aurait échappé au fil des posts ?

Sinon en passant par "se connecter à une base existante", en choisissant text, je ne peux mm ps sélectionner mes fichiers csv ou txt qui restent grisés & en choisissant tableur, la connexion est impossible. :fou:
J'ai bien essayer de passer par Calc (export de mon calendrier en csv, importation ds calc, traiter le fichier puis connecter à Base) mais cela représente bcp trop de manipulations pour les utilisateurs à qui s'adressera cette base, tout comme la solution évoquée ici : http://user.services.openoffice.org/fr/ ... d=a#p62498.

Par avance, merci de votre aide.
Je vous joins la source (en citation ci dessous) & la Base.
;Tapis Hafiz;01/07/08;01/07/08;4;13,50;aaa aaa
;AS Hafiz : construction;02/07/08;03/07/08;=8*2;15,50;bbb bbb
;Entracte dechargement;04/07/08;04/07/08;4;11; ccc ccc ;aaa aaa
;Retour CB Entrx;07/07/08;07/07/08;8;13,50;ccc ccc
;Hafiz décors;08/07/08;08/07/08;8;15,50;ccc ccc
;Carnet ata Entracte/rtr ppdm;09/07/08;09/07/08;8;13,5;ddd ddd
;clean depot;10/07/08;10/07/08;8;13,50;ddd ddd;eee eee
;clean depot;11/07/08;11/07/08;8;13,50;ddd ddd;eee eee
;Entracte ATA;15/07/08;15/07/08;8;13,50;ddd ddd;eee eee
;Entracte ATA;16/07/08;17/07/08;=8*2;13,50;ddd ddd
;Instru Akosh;19/07/08;19/07/08;8;13,5;eee eee
;rangement ccno + dépot;21/07/08;25/07/08;=8*5;13,50;ddd ddd; eee eee
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par sebmdp le 26 juil. 2008 13:55, modifié 1 fois.
Open Office 3.2.1
Mac OS 10.5.8
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Liaison dynamique avec un fichier .csv

Message par Pierre-Yves Samyn »

Bonjour

Après un examen rapide je vois plusieurs problèmes :

Création de la table :

Code : Tout sélectionner

CREATE TEXT TABLE  "test3" ("RefEvent" INTEGER GENERATED BY DEFAULT AS IDENTITY, "NomEvent" VARCHAR(50), "DateDébut" Date, "DateFin" DATE, "NbreHeure" NUMERIC, "Taux" NUMERIC, "NomEmployé" VARCHAR(50))
Fichier source :
Le format des dates est a priori incorrect dans le fichier source. Je pense que les dates doivent être sous la forme : 2008-07-01
De même, je pense qu'il faut utiliser le point et non la virgule. Dans les deux cas (dates et nombre) ils seront correctement affichés dans OOo
Tu ne peux utiliser de calculs mais uniquement un résultat : remplacer par exemple =8*2 par 16 (nous ne sommes pas dans un tableur...)
Je ne suis pas sûr que tu puisses utiliser l'extension txt (je pense que OOo va rechercher un CSV mais je n'ai pas creusé, donc à voir...)
sebmdp
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 08 juil. 2008 16:31
Localisation : Orleans / France

Re: Liaison dynamique avec un fichier .csv

Message par sebmdp »

Bonjour & pour commencer, merci de ton aide.

Alors concernant le format des dates ds le fichier source, je peux choisir le format & le séparateur, je vais donc essayer le format AAAA-MM-JJ.
De même, je pense qu'il faut utiliser le point et non la virgule.
Parles tu ici des séparateurs de texte dans mes champs ? par ex : 15,50 doit être écrit 15.50 ou parles tu des séparateurs de champs ?
Tu ne peux utiliser de calculs mais uniquement un résultat
c'est noté, merci du conseil.
Je ne suis pas sûr que tu puisses utiliser l'extension txt
Je continue les tests sur les 2 formats pour savoir exactement ce que cherche Ooo, mais dans tous les tutos que j'ai pu lire à priori les 2 formats seraient acceptés.
Enfin, ds mon fichier source, dois je garder un premier champs vide qui correspondra à celui de la clef ds ma table : ";nouvel événement;..."
ou alors commencer directement par mon 1er champ de donnée "NomEvent" : "nouvel événement;...." dans la mesure où la clef est maintenant en auto-valeur ?
Je vous tiens au courant des évolutions...

Un gd merci.
Open Office 3.2.1
Mac OS 10.5.8
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Liaison dynamique avec un fichier .csv

Message par Pierre-Yves Samyn »

sebmdp a écrit :
De même, je pense qu'il faut utiliser le point et non la virgule.
Parles tu ici des séparateurs de texte dans mes champs ? par ex : 15,50 doit être écrit 15.50 ou parles tu des séparateurs de champs ?
Euh... je parle de point et de virgule, non du point-virgule que tu utilises comme séparateur de champs. De plus je précise : Dans les deux cas (dates et nombre). Je pensais donc être clair : oui je parle des nombres :lol:
sebmdp a écrit :Enfin, ds mon fichier source, dois je garder un premier champs vide qui correspondra à celui de la clef ds ma table : ";nouvel événement;..."
Je pense que le champ vide ne sera pas accepté.
sebmdp
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 08 juil. 2008 16:31
Localisation : Orleans / France

Re: Liaison dynamique avec un fichier .csv

Message par sebmdp »

& bien malgré toutes les modifications apportées suite à ces éclaircissements je n'ai tj aucun résultat...
j'ai essayé les csv, les txt, le changement de séparateur de champs, de texte, de format, etc... mais rien à faire, ma table reste vide... :marto:
Serais-je dans une impasse ?
Open Office 3.2.1
Mac OS 10.5.8
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Liaison dynamique avec un fichier .csv

Message par Pierre-Yves Samyn »

sebmdp a écrit :& bien malgré toutes les modifications apportées suite à ces éclaircissements je n'ai tj aucun résultat...
j'ai essayé les csv, les txt, le changement de séparateur de champs, de texte, de format, etc... mais rien à faire, ma table reste vide... :marto:
Serais-je dans une impasse ?
Ceci m'ayant fait douter... et disposant de cinq minutes, j'ai pu faire le test confirmant mes précédents propos. Je joins la base exemple avec la table comprenant une clé primaire en auto-valeur et le fichier source correspondant.

Nota : ce fichier CSV doit se trouver dans le même répertoire que le fichier odb.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
sebmdp
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 08 juil. 2008 16:31
Localisation : Orleans / France

Re: Liaison dynamique avec un fichier .csv

Message par sebmdp »

Bonjour,

Le test sur les fichiers joints fonctionne très bien. Merci !
Je crois comprendre pourquoi mes fichiers source ne sont pas importés... la clef primaire n'est pas & ne pourra ps être contenue dedans, d'où la question :
ds mon fichier source, dois je garder un premier champs vide qui correspondra à celui de la clef ds ma table
En supprimant le 1er champ sur le fichier source forum.csv, aucune donnée n'est importée... Je reviens donc à une de mes 1ère interrogation :
Ce fichier source doit-il absolument contenir une incrémentation numérique avant importation, ou peut-on préciser en code ou autrement la création de celle ci directement dans la table ???
Open Office 3.2.1
Mac OS 10.5.8
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Liaison dynamique avec un fichier .csv

Message par Pierre-Yves Samyn »

sebmdp a écrit :Ce fichier source doit-il absolument contenir une incrémentation numérique avant importation, ou peut-on préciser en code ou autrement la création de celle ci directement dans la table ???
J'ai déjà répondu sur cet aspect : un champ vide ne sera pas accepté lors de la connexion.
Par ailleurs, la modification de la table après coup par :

Code : Tout sélectionner

ALTER TABLE <tablename> ADD [COLUMN] <columnname> Datatype
    [(columnSize[,precision])] [{DEFAULT <defaultValue> |
    GENERATED BY DEFAULT AS IDENTITY (START WITH <n>[, INCREMENT BY <m>])}] |
    [[NOT] NULL] [IDENTITY] [PRIMARY KEY]
    [BEFORE <existingcolumn>];
N'est pas possible avec une table "Texte" quand celle-ci n'est pas vide (ou connectée). Même en déconnectant (ce qui permettrait la commande ALTER pour ajouter la clé):

Code : Tout sélectionner

 SET TABLE mytable SOURCE OFF
...le serpent se mord la queue puisque à la reconnexion il y aura un champ "en trop" dans la structure par rapport au fichier texte.

Donc soit tu peux modifier le fichier source pour ajouter la clé, soit tu importes dans une structure ne comprenant pas ce champ non plus puis tu inséres dans une autre table (qui peut être hsql) comprenant un champ en autovaleur via un INSERT.
sebmdp
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 08 juil. 2008 16:31
Localisation : Orleans / France

Re: Liaison dynamique avec un fichier .csv

Message par sebmdp »

Merci pour toutes ces informations & pistes de travail sur lesquelles je vais me pencher pour trouver la solution la plus appropriée à l'utilisation que je fais de base.
& je voudrai aussi remercier tous les membres de ce forum pour les réponses & la façon dont celui ci est géré.

S.D.
Open Office 3.2.1
Mac OS 10.5.8
sebmdp
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 08 juil. 2008 16:31
Localisation : Orleans / France

Re: Liaison dynamique avec un fichier .csv

Message par sebmdp »

Bonjour,

Excusez moi mais je voudrai juste avoir une petite précision :
...soit tu importes dans une structure ne comprenant pas ce champ non plus...
Qu'entends-tu par "structure" ? Une table, un tableur...???


Par avance merci.
Open Office 3.2.1
Mac OS 10.5.8
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: Liaison dynamique avec un fichier .csv

Message par Pierre-Yves Samyn »

sebmdp a écrit :Bonjour,

Excusez moi mais je voudrai juste avoir une petite précision :
...soit tu importes dans une structure ne comprenant pas ce champ non plus...
Qu'entends-tu par "structure" ? Une table, un tableur...???


Par avance merci.
La table créée par :

Code : Tout sélectionner

CREATE TEXT TABLE  "test3" ("RefEvent" INTEGER GENERATED BY DEFAULT AS IDENTITY, "NomEvent" VARCHAR(50), "DateDébut" Date, "DateFin" DATE, "NbreHeure" NUMERIC, "Taux" NUMERIC, "NomEmployé" VARCHAR(50))
et qui ne doit donc pas contenir la création du champ RefEvent.

Ce que je te propose, si tu ne peux modifier le fichier texte "à la source" pour ajouter les valeurs des clés, c'est d'importer dans une table qui ne comprend pas ce champ (il n'y aura donc pas de problème de champ vide à l'import). Tu pourras ensuite remplir une table "normale" (format HSQL) définie avec un champ clé en auto-valeur.
sebmdp
Membre hOOnoraire
Membre hOOnoraire
Messages : 125
Inscription : 08 juil. 2008 16:31
Localisation : Orleans / France

Re: Liaison dynamique avec un fichier .csv

Message par sebmdp »

Impec ! Cela fonctionne très bien.
Pour résumé un peu le tt pour tt le monde :
:idea: : Je cherchais à importer les plannings de travail de mon entreprise édités sur iCal vers base pour gérer de façon dynamique l'ensemble des données.

:arrow: : A partir de l'application Events_Text_iCal éditée par JackJr300, j'exporte mes données depuis iCal vers un fichier au format .txt (sans incrémentation de clef primaire). Les séparateurs de champs sont des points virgule (fs=\semi), mes séparateurs décimaux sont des points.
Comme Pierre-Yves me l'a indiqué j'ai défini une table, ici "test3", sans clef primaire ds laquelle les données du fichier source sont importées :

Code : Tout sélectionner

CREATE TEXT TABLE  "test3" ("NomEvent" VARCHAR(50), "DateDébut" Date, "DateFin" DATE, "NbreHeure" NUMERIC, "Taux" NUMERIC, "NomEmployé" VARCHAR(50))

Code : Tout sélectionner

SET TABLE "test3" SOURCE "Declas08.txt;fs=\semi"
Avec la commande INSERT j'importe les données de la table "test3" dans ma table "Evénements" que j'avais définie selon mes besoins à la création de la base & qui contient une clef primaire en auto-valeur .

Code : Tout sélectionner

INSERT INTO "Evénements" ("NomEvent", "DateDébut", "DateFin", "NbreHeure", "Taux", "NomEmployé") SELECT "NomEvent", "DateDébut", "DateFin", "NbreHeure", "Taux", "NomEmployé" FROM 
"test3" commit
A partir de cette dernière table je pourrai générer mes formulaires & requêtes pour le traitement des données.

Il me reste encore bcp de choses à mettre en place & de détails à régler, mais l'ossature est en place !
Un grand merci à Pierre-Yves pour toutes les précisions & l'aide précieuse. :super:
Open Office 3.2.1
Mac OS 10.5.8
psycodream
Fraîchement OOthentifié
Messages : 5
Inscription : 15 avr. 2010 16:39

Re: [Résolu] Liaison dynamique avec un fichier .csv

Message par psycodream »

Bonjour a tous,

Je suis entrain de crée une base de donne comportant une table fichier clients devant être mise a jour a partir d'un fichier csv.
(c'ete super open office jusque la puissant et accessible vu le nombre de tuto et je tien a vous remercier pour tte c'est info :D )

cependant après des heurs de recherche, de lecture, et de test je ne parviens tjs pas a mes fin et je me tourne donc vers vous

Voila le problème:
impossible de trouver comment lier ma table au fichier csv comme dans la base donner en exemple dans ce topique (merci de l'avoir mise en ligne d'ailleursr ;D),
1/ou trouver l'espace d'exécution ou taper la ligne <<SET TABLE "MaTable" SOURCE "monFichier.csv">> ???
2/n'y a t il pas un assistant pour lier les fichier ???

j'ai ouvert la bdd donne en exemple et la table utiliser pour l'importation comporte une petite flèche verte :bravo: mais elle sort d'où ? :marto:

je découvre "bas" j'espère donc ne pas m'être planter dans la construction de plus je ne me suis pas encore occuper de la partie SQL sa peu venir de la ?

enfin dernière petite question:
je travaille sur win. vista fam. passer sur unix peut il me simplifier la creeation de ma bdd ? (je travaille sur ubuntu sur mon ordi perso ;) ).


merci d'avance j'esper ne pas avoir laissé trop de fautes veuillez m'en excuser
Le Modérateur a écrit : :alerte: Nous nous devons de verrouiller ce fil de discussion. Nous vous rappelons les règles de ce forum et notamment la n° 7
Un sujet = le problème d'une seule personne

Comme vous avez pu le lire, ce sujet est désormais résolu. Si vous avez également ce problème, c'est que ce dernier est différent. Votre configuration n'est peut être pas la même que celle de l'auteur de ce fil.

Dans ce cas et pour des raisons de lisibilité sur ce forum, nous vous demandons de créer une nouvelle question en rappelant que vous avez le même problème que dans ce fil.

Merci de votre collaboration.
OpenOffice 3.1 sous Windows vista OpenOffice 3.1 sous Ubuntu