[Python] Import de gros CSV dans Base

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Répondre
jlf
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 07 févr. 2009 18:30

[Python] Import de gros CSV dans Base

Message par jlf »


La modération vous a écrit: Titre modifié : [CSV][FIREBIRD][PYTHON]
Merci de ne pas inventer vos propres balises et d'avoir un texte reflétant le problème exposé.
Ce n'est pas pour vous mais pour tous ceux effectuant des recherches ensuite dans ce forum.

Bonjour

je voudrais importer régulièrement dans LibreOffice Base de gros csv (quelques K lignes chaque), pour les ajouter dans des tables en relation

pour chaque ligne des csv je dois tester si elle existe dans certaines tables, updater si oui, insert si non, ce genre de traitements
la BDD serait idéalement sur Firebird, que je connais un peu, et je préfèrerais utiliser Python dans l'interpreteur LO

je reviens à LO après une longue absence, et je suis un peu paumé
le pbm est que j'ai du mal à trouver des exemples de code, comment envoyer du sql à LO, récupérer le résultat (par ex la clef primaire d'un enregistrement existant) dans le script Python

j'en viens à me demander si c'est possible, ou si le couple HSQL + Basic, pour lequel il semble y avoir plus de doc, est la meilleure soluce ?

je vous remercie de vos avis et de votre aide
LibreOffice 6.3 (boulot) et 7.0.5.2 (perso) Windows 10
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [CSV][FIREBIRD][PYTHON]

Message par jeanmi2403 »

Bonjour,
Personnellement, je saurais faire en Basic.
Si vous avez un extrait de la base et un CSV non confidentiels, je peux aider dans ce domaine.
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Python] Import de gros CSV dans Base

Message par Dude »

Salut,

Pas la peine de réinventer l'eau chaude, installe l'extension ImportCSV.
Seule restriction, elle ne supporte que le HSQL. Firebird n'étant pas disponible sous OpenOffice.
jlf
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 07 févr. 2009 18:30

Re: [Python] Import de gros CSV dans Base

Message par jlf »

je crois que j'ai trop simplifié l'expression de mes besoins, j'essaie de compléter :

- le but est de synthétiser les résultats de plusieurs applications indépendantes avec la souplesse du sql
- les csv à importer chaque mois sont nombreux, parfois plusieurs centaines
il faut donc pouvoir balayer en auto tous les fichiers d'un répertoire où ils seraient groupés et les importer sans intervention manuelle
- leur structure est différente, en fonction des noms de colonnes identifiant leur origine ils ne doivent pas être chargés dans les mêmes tables ou de la même façon
- l'historicité est le but principal, je ne repars pas de tables vides à chaque fois mais j'ajoute les nouvelles données aux anciennes
- la plus grosse table fille de la base devrait tourner autour de 100 K lignes de quelques colonnes, et les tables parents ou périphériques moins de quelques K
- le process d'import serait confié à des acteurs locaux, donc l'idéal est de pouvoir embarquer les script dans le document bdd sans install complémentaire mais au pire je peux envisager un installateur pour copier des scripts dans les paths ad hoc (ça colle avec Basic aussi bien que Python si j'ai bien vu)

je sais, ça fait beaucoup de contraintes :o(

@Dude :
mes contraintes ne semblent pas adaptables à une extension qui agit sur 1 csv et l'importe sans changements dans une table de la base, ce qui est le cas de ImportCSV si j'ai bien compris
je regarderai demain de plus près, et de toutes façons si les sources sont accessibles ça me servira certainement à mieux comprendre, donc merci

et peut-être qu'une fois embarqué dans une base ce serait plus facile de répartir les données dans une autre ?

mais par ailleurs je crois avoir compris que le HSQL n'est pas très adapté à des grosses tables, sachant qu'après import les interrogations sql seront intenses et demanderont une bonne réactivité
bon, vu l'état néant de ma connaissance ce n'est peut-être qu'un a priori conspirationniste de ma part ?

pour avoir utilisé FB il y a 15 ans je sais qu'il reste fluide avec des trucs très gros, l'embarquement dans LO n'a probablement pas changé ça (?)

@jeanmi2403
à ce stade rien n'est fait, je n'en suis qu'à l'examen de la faisabilité sous LO, donc je n'ai aucune bdd déjà réalisée
pour oBasic : j'ai de très mauvais souvenir de deboggages inextricables, qui venaient sans doute de moi (je suis loin d'être un pro) mais je suis resté traumatisé
cela dit ce genre de trauma doit pouvoir se soigner, je fais juste ma coquette et je suis de toutes façons réduit à me faire (un peu) violence car j'ai pas d'autre soluce que LO à court terme ;o)

en tous cas merci de vous être penchés sur mon pbm, je me sens moins seul :o)
LibreOffice 6.3 (boulot) et 7.0.5.2 (perso) Windows 10
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Python] Import de gros CSV dans Base

Message par jeanmi2403 »

Bonjour,
Pour donner un ordre d'idée, j'ai réalisé avec Libre Office un programme de recherche lexicographique qui parcourt environ 1000 fichiers de discours (odt, txt, Doc, docx) et construit un odt avec les paragraphes contenant les expressions recherchées. En 15 a 20 secondes.
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
jlf
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 07 févr. 2009 18:30

Re: [Python] Import de gros CSV dans Base

Message par jlf »

jeanmi2403 a écrit :En 15 a 20 secondes
oui effectivement c'est pas mal
mais mon soucis n'est pas dans la durée de l'import proprement dit, il est surtout dans l'utilisation de la base après import, avoir du sql fluide
d'où mon hésitation entre firebird et HSQL

s'agissant des scripts ma préoccupation est entre oBasic et oPython, le dernier aurait ma préférence mais est rare en doc :(
je n'ai même pas trouvé comment dans un script Python exécuté sous LO comment se connecter, envoyer une requête à une base, et récupérer le résultat

je vais essayer avec oBasic, on verra bien
savez vous si pour ce langage la faq de developpez.com est à peu près à jour, car le dernier fil est de 2017 ?
https://openoffice-libreoffice.developpez.com/faq/

ou en connaissez vous une meilleure ?

merci de votre aide
LibreOffice 6.3 (boulot) et 7.0.5.2 (perso) Windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: [Python] Import de gros CSV dans Base

Message par Bidouille »

Bonjour,

La ressource que vous donnez est déjà citée dans ce fil épinglé en haut de la section :
A lire d'urgence
A lire d'urgence
jlf
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 07 févr. 2009 18:30

Re: [Python] Import de gros CSV dans Base

Message par jlf »

Bidouille a écrit :La ressource que vous donnez est déjà citée dans ce fil épinglé en haut de la section
oui mais vous avez du mal me lire, ou trop vite : je ne citais pas ce lien comme ressource mais pour demander s'il était encore d'actualité et s'il n'y avait pas plus récent
vu les dates en cause cette précision semble intéressante pour tout le monde

bon, il est possible que ce genre de question soit interdite sur ce forum, si c'est le cas je m'en excuse, mais à première vue ça parait excessivement absurde et je vous serais reconnaissant de citer explicitement et précisément la partie de règle justifiant votre interprétation ?

je profite de l'occasion pour faire aussi remarquer (respectueusement :D ) que la modification que vous ou un membre de votre équipe avez faite au titre du fil est au moins partiellement incorrecte : le sujet était principalement Python pour des bases Firebird, la moitié au moins a donc été effacée, balise ou pas, au détriment des lecteurs ?
LibreOffice 6.3 (boulot) et 7.0.5.2 (perso) Windows 10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: [Python] Import de gros CSV dans Base

Message par Bidouille »

jlf a écrit :mais pour demander s'il était encore d'actualité et s'il n'y avait pas plus récent
Cette FAQ ne faisant pas partie de notre forum, je vous suggère plutôt de poser la question au site qui l'héberge.
Néanmoins il est vrai que nous préférons nos propres ressources plutôt que celles de tiers dont la fiabilité n'est souvent pas de mise.
Surtout lorsque les informations sont pompées sans citation de l'auteur.
jlf a écrit :la modification que vous ou un membre de votre équipe avez faite au titre du fil est au moins partiellement incorrecte
Je reprends la 1ere phrase de votre question :
jlf a écrit :importer régulièrement dans LibreOffice Base de gros csv
Vous pouvez éventuellement préciser "sous Firebird".
jlf
Membre lOOyal
Membre lOOyal
Messages : 29
Inscription : 07 févr. 2009 18:30

Re: [Python] Import de gros CSV dans Base

Message par jlf »

Bidouille a écrit :Cette FAQ ne faisant pas partie de notre forum, je vous suggère plutôt de poser la question au site qui l'héberge.
[...]
Je reprends la 1ere phrase de votre question :
ma maman dirait que ce n'est pas éthique d'utiliser sa position pour assouvir ses rancunes, et encore moins de prétendre avoir lu un bouquin en parcourant juste la première page
là tu cumules, crois moi elle te gronderait très fort
mais je sais, elle d'une ère révolue

je ne doute pas que developpez.com ait des travers qui justifient tes foudres, si tu le dis, mais le minimum dans ce cas serait d'interdire explicitement dans le règlement les références à ce site
à défaut c'est juste arbitraire, donc inobservable pour moi si je veux continuer à mériter l'estime de ma maman, désolé

quant aux pbms de concentration en lecture, elle aurait ajouté que la dernière phrase d'un texte est souvent beaucoup plus utile aux paresseux que la première
ici force est de constater que son conseil t'aurait servi :D

bien à toi
LibreOffice 6.3 (boulot) et 7.0.5.2 (perso) Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Python] Import de gros CSV dans Base

Message par Dude »

jlf a écrit :mes contraintes ne semblent pas adaptables
Comme toujours sans exemple concret ni contexte d'utilisation, on parle dans le vide.
jlf a écrit :mais par ailleurs je crois avoir compris que le HSQL n'est pas très adapté à des grosses tables
"Grosse" est une notion abstraite. Quelle est la volumétrie attendue ?
jlf a écrit :pour avoir utilisé FB il y a 15 ans je sais qu'il reste fluide avec des trucs très gros, l'embarquement dans LO n'a probablement pas changé ça (?)
En mars 2020, cette fonctionnalité a fait un rétro-pédalage et se retrouve "expérimentale" :
https://git.libreoffice.org/core/+/2898943ed765290e2c58f8dd84053b4ef9ac158e
Répondre