Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je cherche à savoir dans quelle champs et dans quelle table appartient un enregistrement.
Existe t'il une fonction dans postgresql me permettant ceci?
Merci
Hors ligne
Bonjour,
La question est un peu trop vague, vous pouvez préciser ?
Vous avez une chaine de caractère, et vous voulez la chercher dans toute la base, indistinctement ?
Marc.
Hors ligne
Oui, c'est bien la difficulté.
j'ai une base avec 129 tables et chaque table contient environ 20 champs.
je ne peut pas chercher un à un dans les tables l'information.
je cherche par exemple a determiner l'emplacement du champs "gare_bus", mais je ne connais ni la table, ni le champs.
une 2e question est aussi que le champ contenant l'enregistrement contient la chaine "projet".
Serait il possible de trouver ce champs dans la base sans regarder les tables une à une?
Merci
Hors ligne
Pour déterminer dans quelle table se trouve un champ, allez regarder la vue information_schema.colums (très simple, une fois qu'on sait que cette vue existe…)
Pour l'autre question :
Je n'ai pas de méthode magique pour toutes les tables. Mais pour trouver directement dans une table oui. Voila un exemple :
marc=# CREATE TABLE test (a int, b varchar);
CREATE TABLE
marc=# INSERT INTO test values (1,'toto');
INSERT 0 1
marc=# INSERT INTO test values (2,'titi');
INSERT 0 1
marc=# SELECT * from test where test::text ~ 'tit';
a | b
---+------
2 | titi
(1 row)
Il ne vous reste plus qu'à faire une boucle. Ou un script qui génère une série de select * :
SELECT 'SELECT * FROM ' || tablename || ' WHERE ' || tablename || E'::text ~ \'titi\';' from pg_tables where schemaname='public';
Récupérez le script généré et exécutez le.
Marc.
Hors ligne
Pages : 1