est-il possible de rechercher une table de base de données entière (ligne et colonne) pour trouver une chaîne particulière.
J'ai une base de données nommée A avec environ 35 tables, je dois rechercher la chaîne nommée "bonjour" et je ne sais pas sur quelle table cette chaîne est enregistrée. Est-ce possible?
Utiliser MySQL
je suis un administrateur linux et je ne suis pas familier avec les bases de données, il serait vraiment utile que vous puissiez également expliquer la requête.
Réponses:
Plus: http://winashwin.wordpress.com/2012/08/28/mysql-search/
la source
En juillet 2012, j'ai écrit ce message
Requête pour trouver et remplacer du texte dans toutes les tables et tous les champs d'une base de données mysql
Il utilise la table information_schema.columns pour récupérer tous les champs CHAR, VARCHAR et TEXT et effectuer un REMPLACEMENT textuel .
Veuillez regarder mon ancien lien et utiliser son paradigme pour faire une recherche.
Par exemple, cela créera un SELECT distinct pour chaque colonne de texte dans chaque tableau
Créez un fichier texte SQL géant avec. Ensuite, exécutez ce script Giant SQL:
La sortie vous indique la base de données, la table et la colonne dans lesquelles les données apparaissent.
Essaie !!!.
ÉDITER:
DEVRAIT: ajouter les deux graduations ci-dessous pour les tableaux qui ont un espace dans le nom.
la source
En adoptant une autre approche qui ne nécessite pas la création de requêtes SQL, j'ai développé CRGREP comme un outil de ligne de commande open source gratuit qui accueillera les bases de données (y compris MySQL) et prend en charge les recherches de type "fred customer.name" simples pour "fred" dans le "nom" "colonne de la table" client "à une correspondance de modèle plus complexe telle que" fr? d * .author "pour la correspondance de modèle avec toutes les colonnes" auteur "de toutes les tables.
la source
Vous pouvez renvoyer toutes les colonnes de toutes les tables qui correspondent à toutes les valeurs que vous recherchez en une seule fois en vous basant sur la réponse de RolandoMySQLDBA et en utilisant
PREPARE
etEXECUTE
pour exécuter la requête .la source
Si vous pouvez utiliser un bash - voici un script: Il a besoin d'un utilisateur dbread avec pass dbread sur la base de données.
Si quelqu'un veut une explication: http://infofreund.de/?p=1670
la source
Si vous êtes administrateur Linux, vous devez être familier avec la ligne de commande, donc celle-ci serait pratique:
Modifiez
root
/root
vos identifiants mysql (ou utilisez~/.my.cnf
),db_name
votre nom de base de données etfoo
votre texte de recherche. Le paramètre--skip-extended-insert
pourmysqldump
affichera chaque requête sur des lignes distinctes. Le paramètre--color=auto
pourgrep
mettra en surbrillance votre chaîne et-w
correspondra au mot entier.la source
Avez-vous accès à phpMyAdmin? Il a une fonction de recherche pour chaque base de données.
ou utilisez le script de votre choix sur le résultat de (changer le nom de la base de données):
la source
Je me concentre sur une solution de modèle simple pour votre question implémentée dans plsql pour Oracle base de données , j'espère la personnaliser sur MySql, étant un simple googleing. tout ce dont vous avez besoin est d'étudier le schéma d'informations sur MySql et de remplacer un nom de table et des colonnes.
Dans le script:
ALL_TAB_COLUMNS
est une table de schéma d'informations contenant toutes les colonnes de table 'VARCHAR2', 'NVARCHAR2', 'NCHAR', 'CHAR' fait référence aux types de colonnes de chaîne dans Oracle, vous devez les remplacer par des noms de type équivalents de MySql% hello% est le mot-clé de recherche le remplacer par n'importe quelle chaîne.
Le résultat sera un ou plusieurs scripts SQL (en fonction de vos types de colonnes de tables) et leur exécution entraînera votre réponse.
Les performances et la consommation de temps seront également un autre problème.
j'espère que ce sera utile
la source
Il y a une belle bibliothèque pour lire toutes les tables, ridona
la source
Utilisez cette astuce avec une seule ligne de code
nom_colonne: saisissez le nom de toutes les colonnes dans lesquelles vous effectuez une recherche.
nom_table: saisissez tous les noms de table dans lesquels vous effectuez une recherche.
la source
Si vous utilisez MySQL Workbench, faites un clic droit sur le schéma de la base de données et sélectionnez "Rechercher les données de la table ..." puis remplissez le formulaire. Cela recherchera la base de données entière. Lorsque (ou si) les résultats apparaissent, cliquez sur la flèche pour développer. Il affichera le schéma, la table, les données de clé primaire, le nom de la colonne et les données réelles qui correspondent à votre recherche.
Conseil: Si rien ne se produit, essayez d'élargir votre recherche.
S'il vous plaît noter que ceci est vraiment utile pour le texte de recherche (
char
,varchar
ettext
) les types de données.la source