#1 Le 22/07/2017, à 11: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, à 08:40)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#2 Le 22/07/2017, à 12: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, à 12:15)
« On ne répond pas à une question par une autre question. » (moi ;-) )
Hors ligne
#3 Le 22/07/2017, à 12: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, à 12: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").
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
Hors ligne
#5 Le 22/07/2017, à 17: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 )
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, à 18:22)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 22/07/2017, à 20: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.
à 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, à 20:58)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 22/07/2017, à 20: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 ? ....
Hors ligne
#8 Le 23/07/2017, à 08: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
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à
Merci, la connexion fonctionne mieux maintenant
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...
mais ça devrait bien m'aider quand même !
Merci beaucoup à vous !
I love forum.ubuntu-fr.org
Dernière modification par Hizoka (Le 23/07/2017, à 08:40)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne