Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 22/07/2017, à 12:52

Hizoka

[Résolu] Trouver les liens entre de nombreuses tables de données

Bonjour à vous,

Je vous explique vite fait la situation, au taf on a un logiciel qui permet de gérer tous nos patients, que ce soit au niveau du matériel, des ordonnances, de la facturation sécu...
Ce logiciel utilise une très grosse base de données en postgresql.

Mon patron aurait besoin d'extraire des données afin de se faire ses camemberts, ses chiffrages, des recherches...

Je suis donc passé par le fabriquant qui globalement en à rien à cirer.

Je me retrouve avec une base de données contenant un peu plus de 350 tables (contenant beaucoup de colonnes) reliées les unes aux autres via des éléments communs.
Il faudrait donc que j'arrive à trouver les liens entre elles. Bien évidemment, les noms des colonnes ne peuvent pas nous aider car elles sont différentes...

Il est évidant que je ne peux pas m'amuser à trouver les liens manuellement...

Je venais voir si vous aviez des idées pour procéder ?

Je me dis que je pourrais surement faire :
- Je boucle sur toutes les tables
- Pour chaque tables j'exporte son contenu dans un fichier txt/csv portant son nom (plus simple pour travailler dessus par la suite)
- Je pars d'un fichier contenant les infos principales, je prends quelques lignes et pour chaque élément je fais un grep sur tous les autres fichiers pour trouver les valeurs identiques
- Pour chaque valeur qui ressort je récupère le nom de sa colonne
- Je crée un fichier qui indiquerait un truc du genre : tableX.NomDeLaColonneX <=> tableY.NomDeLaColonneY

Je suis tout ouïe en sachant que je découvre les bases de données, mais tant que j'ai les idées de bases, je me débrouillerai pour les appliquer.

Merci à vous.

Dernière modification par Hizoka (Le 23/07/2017, à 09:40)

Hors ligne

#2 Le 22/07/2017, à 13:14

Alex10336

Re : [Résolu] Trouver les liens entre de nombreuses tables de données

Bonjour,

une approche possible, afficher les clés étrangères:
https://stackoverflow.com/questions/115 … ys#1152321
une autre approche possible, si pas de clés étrangères, afficher les index:
https://stackoverflow.com/questions/220 … ql#2213199

Si les tables sont bien foutues, il y a forcément l'un, au mieux les deux. Et des noms de colonnes un peu lié.

++

Dernière modification par Alex10336 (Le 22/07/2017, à 13:15)


« On ne répond pas à une question par une autre question. » (moi ;-) )

Hors ligne

#3 Le 22/07/2017, à 13:18

J5012

Re : [Résolu] Trouver les liens entre de nombreuses tables de données

essaie adminer sur une copie de ta base ...

ou tu installes postgresql

sudo apt-get install postgresql

et tu fais ensuite sur ta base les requetes necessaires de select :

http://www.postgresqltutorial.com/
http://docs.postgresqlfr.org/

Hors ligne

#4 Le 22/07/2017, à 13:24

jplemoine

Re : [Résolu] Trouver les liens entre de nombreuses tables de données

Attention ! Normalement, on ne fait pas de stats sur la base de production mais sur une copie sur un serveur dédié.
Si la requête est "foireuse" et que l'on prend trop de CPU, ça ne bloque pas la production : j'ai vécu 2 exemples dont 1 récent (stats sur base de production car "on ne peut pas faire autrement").


Cordialement, Jean-Philippe.
Système principal Sous Ubuntu de 2009 à février 2015 - Xubuntu depuis.
Xubuntu 16.04 (poste principal portable) - Ubuntu 16.04 server (desktop converti en serveur DHCP, DNS, dépôt local et supervision (shinken))
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)

Hors ligne

#5 Le 22/07/2017, à 18:24

Hizoka

Re : [Résolu] Trouver les liens entre de nombreuses tables de données

J5012 => Adminer (qui existe sur les dépôts) parle de schémas et un screenshot laisse rêveur, mais je présume que ça ne fonctionne que si on le lui indique les liens ?
sinon merci pour les liens que je regarderai pour apprendre, mais le problème principal reste vraiment la façon de déterminer les liens entre les tables.

EDIT : Quand j’essaie de me connecter à la base de données : "Aucune des extensions PHP supportées (PgSQL, PDO_PgSQL) n'est disponible"
ça à l'air d'être la misère : https://sourceforge.net/p/adminer/discu … it=25#25c2
j'ai suivi ça : https://coderwall.com/p/21uxeq/connecti … ntu-debian
mais maintenant quand je teste la connexion, j'ai le droit à :

Error 20004 (severity 9):
        Read from the server failed
        OS error 104, "Connexion ré-initialisée par le correspondant"
Error 20002 (severity 9):
        Adaptive Server connection failed
There was a problem connecting to the server

J'ai essayé en modifiant la version utilisé, mais pas mieux : https://stackoverflow.com/questions/117 … -from-tsql
La difficulté de plus, c'est que la base de donnée est sur un windows server.

jplemoine => J'en prends bonne note, d'où mon idée de travailler sur des fichiers pour apprendre à faire les liens, mais malheureusement pour le moment, je n'ai pas d'autre serveur dispo (surtout maintenant que le boss est en vacances tongue)
il faudrait que je vois comment faire une sauvegarde de la base de donnée pour taffer dessus sur mon pc.

En tout cas, merci pour vos retours.

PS : Pour info, c'est une pme sans rapport avec l'informatique.

Dernière modification par Hizoka (Le 22/07/2017, à 19:22)

Hors ligne

#6 Le 22/07/2017, à 21:35

Watael

Re : [Résolu] Trouver les liens entre de nombreuses tables de données

je ne suis pas un spécialiste des bases de données, donc je vais peut-être dire des bêtises, et ne pas employer les termes convenus.

pour autant que je me souvienne, les liens entre les tables sont définis au cours de la rédaction des requêtes; tu ne peux donc pas, a priori, déterminer quels sont les liens éventuels entre les tables.
tu peux présumer de l'existence qu'un lien pourrait être fait vers une autre table parce qu'il existe un index, mais pas l'identifier.
sad

à moins que des tables temporaires (?) aient été définies, ou qu'il existe un système d'enregistrement des requêtes...

Dernière modification par Watael (Le 22/07/2017, à 21:58)


eval, c'est mal.

En ligne

#7 Le 22/07/2017, à 21:52

J5012

Re : [Résolu] Trouver les liens entre de nombreuses tables de données

@hizoka : ne pas se fier à une discussion de 2014 ... on dit partout qu'il faut remonter au site officiel du logiciel ?

je t'ai indiqué adminer parce que c'est un cms pour gerer une base comme phpmyadmin mais plus simple (un seul script php et rien d'autre) et plus facile à configurer (plus facile que wordpress) ...

je pensais que tu connaissais le principe des vhosts lamp : httpd+sgbdr+php , dans le cas qui nous occupe le sgbdr est postgresql et non mysql mais le principe d'install et de configuration est le meme : au lieu d'installer le module mysql pour php, tu installes le module postgresql pour php ...

sudo apt-get install php-pgsql

l'avantage d'avoir un affichage graphique est que tu peux voir la structure des liens , des requetes, et meme la structure de la construction de la base ...

le jour où je pourrais faire fonctionner un serveur lamp sur une cle usb , je pourrais transporter dans ma poche n'importe quel app interactive ! → un serveur lamp appimage ? .... cool

Hors ligne

#8 Le 23/07/2017, à 09:39

Hizoka

Re : [Résolu] Trouver les liens entre de nombreuses tables de données

je t'ai indiqué adminer parce que c'est un cms pour gerer une base comme phpmyadmin mais plus simple (un seul script php et rien d'autre) et plus facile à configurer (plus facile que wordpress) ...

et je t'en remercie beaucoup smile

je pensais que tu connaissais le principe des vhosts lamp : httpd+sgbdr+php , dans le cas qui nous occupe le sgbdr est postgresql et non mysql mais le principe d'install et de configuration est le meme : au lieu d'installer le module mysql pour php, tu installes le module postgresql pour php ...

Oui je connais le principe car j'ai quelques pages en php avec mysql et phpmyadmin sur mon serveur perso.

sudo apt-get install php-pgsql

Arf, j'ai installé différentes choses mais pas ce paquet là sad
Merci, la connexion fonctionne mieux maintenant tongue

Et là, c'est le miracle...
Tous les schémas sont présents !!!!!
Bon c'est illisible vu que les liens sont superposés mais bon... smile
mais ça devrait bien m'aider quand même !

Merci beaucoup à vous !

I love forum.ubuntu-fr.org cool

Dernière modification par Hizoka (Le 23/07/2017, à 09:40)

Hors ligne