Możesz zajrzeć do information_schemaschematu. Zawiera listę wszystkich tabel i wszystkich pól znajdujących się w tabeli. Następnie możesz uruchamiać zapytania, korzystając z informacji uzyskanych z tej tabeli.
Tabele, których to dotyczy, to SCHEMATY, TABELE i KOLUMNY. Istnieją klucze obce, dzięki którym można dokładnie zbudować tabele w schemacie.
nie takiej odpowiedzi chciałem, ale muszę zaakceptować prawdę. : D Dziękuję
RSilva
1
To prawda, ale odpowiedź @Dan Rather również pomogła, ponieważ baza danych, którą przeglądałem, została niejasno skonfigurowana i nie mogłem zorientować się, jaka nazwa kolumny lub tabela byłyby na pewno po prostu patrząc ...
DrCord
12
information_schemato baza danych, a nie tabela. Trochę wyjaśnienia, w której tabeli szukaćinformation_schemaDobrze byłoby
CaptSaltyJack
3
Zabawne jest dla mnie to, że MySql nie umożliwił przeszukiwania wszystkich tabel. Wygląda na dość podstawową opcję
Jest to „standardowy” (de facto) sposób przeszukiwania całych baz danych. Podoba mi się, mysqldump -Tktóry tworzy dwa pliki na tabelę w określonym katalogu. Następnie grep <search> *w katalogu, a zwrócono plik tablename.txt lub .sql. Plik txt przechowuje dane dla tabeli (rozdzielane tabulatorami, zmień nazwę na csv, aby otworzyć w programie Excel), a sql przechowuje definicję tabeli, zgadłeś: SQL. W ten sposób przeszukujesz wszystko i łatwo zawęzić dane. Ta metoda może być jednak dość trudna do uruchomienia w niektórych środowiskach. Przepełnienie stosu jest tutaj bardzo pomocne.
Joel Mellon
Kiedy masz duży SQL, a może w archiwum - możesz otworzyć go w MC bezpośrednio na serwerze, a następnie wyświetlić-> Wyszukaj
Witalij Zdanevich,
1
Fajna sugestia! Ale to nie zadziała, jeśli plik zrzutu db jest naprawdę duży (sytuacja, którą mam teraz :))
Boban
207
Jeśli masz zainstalowany phpMyAdmin, użyj jego funkcji „Szukaj”.
Wybierz swoją bazę danych
Upewnij się, że masz wybraną bazę danych (tj. Nie tabelę, w przeciwnym razie otrzymasz zupełnie inne okno dialogowe wyszukiwania)
Kliknij kartę „Wyszukaj”
Wybierz szukany termin
Wybierz tabele do przeszukania
Użyłem tego do 250 baz danych / 10 GB baz danych (na szybkim serwerze), a czas reakcji jest niesamowity.
Jedna z naszych baz danych ma 92,7 GB i ta opcja działała dobrze. Świetne rozwiązanie
Tricky,
5
Zawsze zapominam, co może zrobić cały phpMyAdmin. To świetne narzędzie!
Ville
1
Niezwykle szybki i pomocny w mojej bazie danych Magento. Znalazłem pole danych, których szukałem w ciągu kilku sekund, a także wszystkie inne tabele, które do niego odwoływały.
mtrueblood
1
MySQL Workbench ma również tę funkcję: „Baza danych >> Szukaj danych tabeli ...”
matt wilkie
1
Miły! teraz jak zastąpiłbyś szukany ciąg w phpmyadmin?
Pathros,
46
Funkcja PHP:
function searchAllDB($search){
global $mysqli;$out ="";$sql ="show tables";$rs =$mysqli->query($sql);if($rs->num_rows >0){while($r =$rs->fetch_array()){$table=$r[0];$out .=$table.";";$sql_search ="select * from ".$table." where ";$sql_search_fields = Array();$sql2 ="SHOW COLUMNS FROM ".$table;$rs2 =$mysqli->query($sql2);if($rs2->num_rows >0){while($r2 =$rs2->fetch_array()){$column=$r2[0];$sql_search_fields[]=$column." like('%".$search."%')";}$rs2->close();}$sql_search .= implode(" OR ",$sql_search_fields);$rs3 =$mysqli->query($sql_search);$out .=$rs3->num_rows."\n";if($rs3->num_rows >0){$rs3->close();}}$rs->close();}return$out;}
Nie działa już w PHP7. (mysql_connect przestarzałe w PHP 5.5.0, usunięte w PHP 7.0.0)
iDev247
12
Jeśli unikasz stored proceduresjak zarazy lub nie jesteś w stanie tego zrobićmysql_dump powodu uprawnień lub inne przyczyny.
Sugerowałbym takie trzyetapowe podejście:
1) Gdzie to zapytanie tworzy zestaw zapytań jako zestaw wyników.
#=================# VAR/CHAR SEARCH
#=================# BE ADVISED USEANYOF THESE WITH CAUTION
# DON'T RUN ON YOUR PRODUCTION SERVER
# ** USE AN ALTERNATE BACKUP **
SELECT
CONCAT('SELECT*FROM', A.TABLE_SCHEMA, '.', A.TABLE_NAME,
'WHERE', A.COLUMN_NAME, 'LIKE\'%stuff%\';')FROM INFORMATION_SCHEMA.COLUMNS A
WHERE
A.TABLE_SCHEMA !='mysql'AND A.TABLE_SCHEMA !='innodb'AND A.TABLE_SCHEMA !='performance_schema'AND A.TABLE_SCHEMA !='information_schema'AND(
A.DATA_TYPE LIKE'%text%'OR
A.DATA_TYPE LIKE'%char%');
.
#=================# NUMBER SEARCH
#=================# BE ADVISED USEWITH CAUTION
SELECT
CONCAT('SELECT * FROM ', A.TABLE_SCHEMA,'.', A.TABLE_NAME,' WHERE ', A.COLUMN_NAME,' IN (\'%1234567890%\');')FROM INFORMATION_SCHEMA.COLUMNS A
WHERE
A.TABLE_SCHEMA !='mysql'AND A.TABLE_SCHEMA !='innodb'AND A.TABLE_SCHEMA !='performance_schema'AND A.TABLE_SCHEMA !='information_schema'AND A.DATA_TYPE IN('bigint','int','smallint','tinyint','decimal','double');
.
#=================# BLOB SEARCH
#=================# BE ADVISED THIS IS CAN END HORRIFICALLY IF YOU DONT KNOW WHAT YOU ARE DOING
# YOU SHOULD KNOW IF YOU HAVE FULL TEXT INDEXONORNOT# MISUSE AND YOU COULD CRASH A LARGE SERVER
SELECT
CONCAT('SELECT CONVERT(',A.COLUMN_NAME,' USING utf8) FROM ', A.TABLE_SCHEMA,'.', A.TABLE_NAME,' WHERE CONVERT(',A.COLUMN_NAME,' USING utf8) IN (\'%someText%\');')FROM INFORMATION_SCHEMA.COLUMNS A
WHERE
A.TABLE_SCHEMA !='mysql'AND A.TABLE_SCHEMA !='innodb'AND A.TABLE_SCHEMA !='performance_schema'AND A.TABLE_SCHEMA !='information_schema'AND A.DATA_TYPE LIKE'%blob%';
Wyniki powinny wyglądać następująco:
2) Następnie możesz po prostu Right Clicki użyćCopy Row (tab-separated)
3) Wklej wyniki w nowym oknie zapytania i biegnij do treści twojego serca.
Szczegół: wykluczam schematy systemowe, których zazwyczaj nie widzisz w swoim środowisku roboczym, chyba że masz taką opcję Show Metadata and Internal Schemas .
Zrobiłem to, aby zapewnić szybki dostęp do ANALYZEcałego hosta lub bazy danych w razie potrzeby lub do uruchomieniaOPTIMIZE instrukcje w celu poprawy wydajności.
Jestem pewien, że możesz to zrobić na różne sposoby, ale oto, co działa dla mnie:
-- ========================================== DYNAMICALLY FIND TABLES AND CREATE A LIST OF QUERIES IN THE RESULTS TO ANALYZE THEMSELECT CONCAT('ANALYZE TABLE ', TABLE_SCHEMA,'.', TABLE_NAME,';')FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA ='dbname';-- ========================================== DYNAMICALLY FIND TABLES AND CREATE A LIST OF QUERIES IN THE RESULTS TO OPTIMIZE THEMSELECT CONCAT('OPTIMIZE TABLE ', TABLE_SCHEMA,'.', TABLE_NAME,';')FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA ='dbname';
Testowane na MySQL w wersji: 5.6.23
OSTRZEŻENIE: NIE URUCHAMIAJ TEGO, JEŚLI:
Martwisz się powodowaniem blokad stołu (miej oko na połączenia klientów)
Nie jesteś pewien, co robisz.
Próbujesz złościć cię DBA. (możesz mieć ludzi przy biurku z szybkością .)
Zdecydowanie nie jest to coś, co chcesz uruchomić na bazie danych na żywo, ale jest pomocne w przypadku niektórych zadań debugowania. Nie udaje się to jednak, jeśli typ kolumny nie jest porównywany z ciągiem. To jest kolumna int.
Michael Thessel,
Świetnie, dodałem trzy alternatywy do przeszukiwania obiektów blob, znaków lub int. To jest tylko uogólnienie i powinno ZAWSZE być używane z ostrożnością. NIGDY w PRODUKCJI, jak już wspomniałeś, to właśnie to powoduje, że zwalniasz „Znajdowanie skryptów w Internecie i ich nie rozumienie, ale mimo to ich uruchamianie”, ale, hej, ludzie uczą się na własnej skórze.
JayRizzo
8
Zrobiłem też własny przeszukiwacz mysql, aby przeszukać konfigurację WordPressa, nie byłem w stanie znaleźć jej zarówno w interfejsie, jak i bazie danych, a zrzuty bazy danych były zbyt ciężkie i nieczytelne. Muszę powiedzieć, że teraz nie mogę się bez tego obejść.
Działa jak ten z @Olivier, ale zarządza egzotycznymi nazwami baz danych / tabel i jest bezpieczny jak Joker.
Otrzymuję ten błąd: Błąd krytyczny: Nieprzechwycony wyjątek „PDOException” z komunikatem „SQLSTATE [42000]: Błąd składniowy lub naruszenie dostępu: 1064 Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL, czy jest odpowiednia składnia do użycia w pobliżu klucza LIKE REPLACE (REPLACE (REPLACE (REPLACE (REPLACE ('180well *),' \\ ',' \\\\ ')),'% „,” w wierszu 1 ”
LLBBL
6
Jest to najprostsze zapytanie do pobrania wszystkich kolumn i tabel
SELECT*FROM information_schema.`COLUMNS` C WHERE TABLE_SCHEMA ='YOUR_DATABASE'
Wszystkie tabele lub tabele z określonym ciągiem w nazwie można przeszukiwać za pomocą karty Wyszukaj w phpMyAdmin.
Dziękuję Ci! Pierwszy raz korzystałem ze stołu warsztatowego. Był dość intuicyjny, wskazał mi stół, którego potrzebowałem i mogłem go zlokalizować.
joshmiller
6
Chociaż to pytanie jest stare, oto jak możesz to zrobić, jeśli używasz mysql workbench 6.3. (Najprawdopodobniej działa również w przypadku innych wersji)
Kliknij prawym przyciskiem myszy swój schemat i „Przeszukaj dane tabeli”, wprowadź swoją wartość i naciśnij „Rozpocznij wyszukiwanie”. Otóż to.
po uruchomieniu CALL findAll('tbl_test','abb')brakuje mi tego błędu: # 1267 - Nielegalna mieszanka zestawień (utf8_general_ci, IMPLICIT) i (utf8_unicode_ci, IMPLICIT) do operacji '=' Czy możesz to naprawić? Dzięki!
Davuz
6
To prosty sposób, który znam. Wybierz swoją bazę danych w PHPMyAdmin i przejdź do zakładki „Szukaj” i napisz, co chcesz znaleźć i gdzie będziesz szukać. Wybierz wszystkie tabele, jeśli będziesz wyszukiwać słowa ze wszystkich tabel. Następnie „GO” i sprawdź wynik.
+1 Wydaje się, że dobrze wykonuje pracę i jest użytecznym narzędziem, które ratuje zespół zaangażowany w niektóre inne odpowiedzi. Warto również zauważyć, że pozwala wybrać, które bazy danych mają być wyszukiwane.
Steve Chambers
3
Możesz użyć
SHOW TABLES;
Następnie pobierz kolumny w tych tabelach (w pętli) za pomocą
SHOW COLUMNS FROMtable;
a następnie za pomocą tych informacji utwórz wiele wielu zapytań, które możesz również UNIONOWĄ, jeśli potrzebujesz.
Ale jest to bardzo ciężkie w bazie danych. Zwłaszcza jeśli wykonujesz wyszukiwanie LIKE.
SHOW TABLES FROM <db_name>jest bardziej precyzyjny
vladkras,
3
To rozwiązanie
a) jest tylko MySQL, nie jest potrzebny żaden inny język,
b) zwraca wyniki SQL, gotowe do przetworzenia!
#Search multiple database tables and/or columns
#Version 0.1- JK 2014-01#USAGE:1.set the search term @search,2.set the scope by adapting the WHERE clause of the `information_schema`.`columns` query
#NOTE: This is a usage example and might be advanced by setting the scope through a variable, putting it allin a function,and so on...#define the search term here (using rules for the LIKE command, e.g %as a wildcard)SET@search ='%needle%';#settings
SET SESSION group_concat_max_len :=@@max_allowed_packet;#ini variable
SET@sql =NULL;#query for prepared statement
SELECT
GROUP_CONCAT("SELECT '",`TABLE_NAME`,"' AS `table`, '",`COLUMN_NAME`,"' AS `column`, `",`COLUMN_NAME`,"` AS `value` FROM `",TABLE_NAME,"` WHERE `",COLUMN_NAME,"` LIKE '",@search,"'" SEPARATOR "\nUNION\n")AS col
INTO@sql
FROM`information_schema`.`columns`WHERE TABLE_NAME IN(SELECT TABLE_NAME FROM`information_schema`.`columns`WHERE
TABLE_SCHEMA IN("my_database")&& TABLE_NAME IN("my_table1","my_table2")|| TABLE_NAME LIKE"my_prefix_%");#prepare andexecute the statement
PREPARE stmt FROM@sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;
Dla tego rodzaju rozwiązań zwykle byłoby fajnie dodać je do phpfiddler, aby ludzie mogli przyjrzeć się, a nawet skomentować twoje rozwiązanie. :)
pal4life
Dostaję błąd, #1243 - Unknown prepared statement handler (stmt) given to EXECUTEgdy uruchamiam zapytanie w Phpmyadmin w celu przeszukiwania całej bazy danych
Vicky Dev,
@ VickyDev Wiem, że minęło ponad rok od twojego pytania. Przepraszam. Niemniej jednak: myślę, że coś innego jest nie tak w twoim skrypcie, ponieważ stmt jest zadeklarowany w wierszu powyżej EXECUTE. Z jakiej wersji MySQL korzystasz?
Chonez
2
Zmodyfikowałem nieco odpowiedź Oliviera na PHP, aby:
wydrukuj wyniki, w których znaleziono łańcuch
pomiń tabele bez wyników
Pokaż także wynik, jeśli nazwy kolumn pasują do wyników wyszukiwania
pokaż całkowitą liczbę wyników
function searchAllDB($search){
global $mysqli;$out ="";$total =0;$sql ="SHOW TABLES";$rs =$mysqli->query($sql);if($rs->num_rows >0){while($r =$rs->fetch_array()){$table=$r[0];$sql_search ="select * from ".$table." where ";$sql_search_fields = Array();$sql2 ="SHOW COLUMNS FROM ".$table;$rs2 =$mysqli->query($sql2);if($rs2->num_rows >0){while($r2 =$rs2->fetch_array()){$colum =$r2[0];$sql_search_fields[]=$colum." like('%".$search."%')";if(strpos($colum,$search)){
echo "FIELD NAME: ".$colum."\n";}}$rs2->close();}$sql_search .= implode(" OR ",$sql_search_fields);$rs3 =$mysqli->query($sql_search);if($rs3 &&$rs3->num_rows >0){$out .=$table.": ".$rs3->num_rows."\n";if($rs3->num_rows >0){$total +=$rs3->num_rows;$out.= print_r($rs3->fetch_all(),1);$rs3->close();}}}$out .="\n\nTotal results:".$total;$rs->close();}return$out;}
Zbudowałem na podstawie poprzedniej odpowiedzi i mam to, dodatkowe wypełnienie, aby móc wygodnie połączyć wszystkie wyniki:
SELECT
CONCAT('SELECT ''',A.TABLE_NAME,'-',A.COLUMN_NAME,''' FROM ', A.TABLE_SCHEMA,'.', A.TABLE_NAME,' WHERE ', A.COLUMN_NAME,' LIKE \'%Value%\' UNION')FROM INFORMATION_SCHEMA.COLUMNS A
WHERE
A.TABLE_SCHEMA !='mysql'AND A.TABLE_SCHEMA !='innodb'AND A.TABLE_SCHEMA !='performance_schema'AND A.TABLE_SCHEMA !='information_schema'UNIONSELECT'SELECT '''-- for exact match use: A.COLUMN_NAME, ' LIKE \'Value\' instead
Najpierw uruchom to, a następnie wklej i uruchom wynik (bez edycji), a wyświetli się wszystkie nazwy tabel i kolumny, w których używana jest wartość.
Cztery kontrole wartości kolumny nie są najprostszym sposobem. Możesz / powinieneś, WHERE NOT A.TABLE_SCHEMA IN ('mysql', 'innodb', 'performance_schema', 'information_schema')a nawet lepiej, wykonać go, sprawdzić używane schematy i ustawić używany schemat tam, gdzie zamiast tego wszystkie inne.
bradbury9,
1
Mam to do pracy. wystarczy zmienić zmienne
$query ="SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema`='".$_SESSION['db']."' AND `table_name`='".$table."' ";$stmt =$dbh->prepare($query);$stmt->execute();$columns =$stmt->fetchAll(PDO::FETCH_ASSOC);$query="SELECT name FROM `".$database."`.`".$table."` WHERE ( ";
foreach ($columns as$column){$query .=" CONVERT( `".$column['column_name']."` USING utf8 ) LIKE '%".$search ."%' OR ";}$query = substr($query,0,-3);$query .=")";
echo $query ."<br>";$stmt=$dbh->prepare($query);$stmt->execute();$results =$stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
print_r ($results );
echo "</pre>";
Zrobiłem to za pomocą HeidiSQL. Nie jest łatwo go znaleźć, ale naciskając Ctrl + Shift + F wyświetla okno dialogowe „Narzędzia tabel”. Następnie wybierz to, co chcesz przeszukać (Pełna baza danych do pojedynczej tabeli), wprowadź wartość „Tekst do znalezienia” i kliknij „Znajdź”. Stwierdziłem, że jest zaskakująco szybki (870 MB db w mniej niż minutę)
Nie wiem, czy jest to tylko w najnowszych wersjach, ale kliknięcie prawym przyciskiem myszy Tablesopcji w Navigatorpanelu powoduje wyświetlenie opcji o nazwieSearch Table Data . Spowoduje to otwarcie pola wyszukiwania, w którym należy wpisać ciąg wyszukiwania i nacisnąć Wyszukaj.
Musisz wybrać tabelę, którą chcesz przeszukać w lewym okienku. Ale jeśli przytrzymasz klawisz Shift i wybierzesz jak 10 tabel jednocześnie, MySql da sobie z tym radę i zwróci wyniki w ciągu kilku sekund.
Odpowiedzi:
Możesz zajrzeć do
information_schema
schematu. Zawiera listę wszystkich tabel i wszystkich pól znajdujących się w tabeli. Następnie możesz uruchamiać zapytania, korzystając z informacji uzyskanych z tej tabeli.Tabele, których to dotyczy, to SCHEMATY, TABELE i KOLUMNY. Istnieją klucze obce, dzięki którym można dokładnie zbudować tabele w schemacie.
źródło
information_schema
to baza danych, a nie tabela. Trochę wyjaśnienia, w której tabeli szukaćinformation_schema
Dobrze byłobyMożesz zrobić
SQLDump
bazę danych (i jej dane), a następnie przeszukać ten plik.źródło
mysqldump -T
który tworzy dwa pliki na tabelę w określonym katalogu. Następniegrep <search> *
w katalogu, a zwrócono plik tablename.txt lub .sql. Plik txt przechowuje dane dla tabeli (rozdzielane tabulatorami, zmień nazwę na csv, aby otworzyć w programie Excel), a sql przechowuje definicję tabeli, zgadłeś: SQL. W ten sposób przeszukujesz wszystko i łatwo zawęzić dane. Ta metoda może być jednak dość trudna do uruchomienia w niektórych środowiskach. Przepełnienie stosu jest tutaj bardzo pomocne.Jeśli masz zainstalowany phpMyAdmin, użyj jego funkcji „Szukaj”.
Użyłem tego do 250 baz danych / 10 GB baz danych (na szybkim serwerze), a czas reakcji jest niesamowity.
źródło
Funkcja PHP:
źródło
$mysqli
ten sposób:$mysqli = new mysqli('localhost', 'root', 'hunter2', 'my_database');
$colum
ze"`$colum`"
tak, że pola, które są zarezerwowane słowa nie spowodują problemówMożesz użyć tego projektu: http://code.google.com/p/anywhereindb
Spowoduje to przeszukanie wszystkich danych we wszystkich tabelach.
źródło
Jeśli unikasz
stored procedures
jak zarazy lub nie jesteś w stanie tego zrobićmysql_dump
powodu uprawnień lub inne przyczyny.Sugerowałbym takie trzyetapowe podejście:
1) Gdzie to zapytanie tworzy zestaw zapytań jako zestaw wyników.
.
.
Wyniki powinny wyglądać następująco:
2) Następnie możesz po prostu
Right Click
i użyćCopy Row (tab-separated)
3) Wklej wyniki w nowym oknie zapytania i biegnij do treści twojego serca.
Szczegół: wykluczam schematy systemowe, których zazwyczaj nie widzisz w swoim środowisku roboczym, chyba że masz taką opcję
Show Metadata and Internal Schemas
.Zrobiłem to, aby zapewnić szybki dostęp do
ANALYZE
całego hosta lub bazy danych w razie potrzeby lub do uruchomieniaOPTIMIZE
instrukcje w celu poprawy wydajności.Jestem pewien, że możesz to zrobić na różne sposoby, ale oto, co działa dla mnie:
Pozdrawiam, Jay; -]
źródło
Zrobiłem też własny przeszukiwacz mysql, aby przeszukać konfigurację WordPressa, nie byłem w stanie znaleźć jej zarówno w interfejsie, jak i bazie danych, a zrzuty bazy danych były zbyt ciężkie i nieczytelne. Muszę powiedzieć, że teraz nie mogę się bez tego obejść.
Działa jak ten z @Olivier, ale zarządza egzotycznymi nazwami baz danych / tabel i jest bezpieczny jak Joker.
Uruchomienie tego skryptu może wygenerować coś takiego:
źródło
Jest to najprostsze zapytanie do pobrania wszystkich kolumn i tabel
Wszystkie tabele lub tabele z określonym ciągiem w nazwie można przeszukiwać za pomocą karty Wyszukaj w phpMyAdmin.
Miej ładne zapytanie ... \ ^. ^ /
źródło
Korzystając z MySQL Workbench, łatwo jest wybrać kilka tabel i uruchomić wyszukiwanie tekstu we wszystkich tabelach DB ;-)
źródło
Chociaż to pytanie jest stare, oto jak możesz to zrobić, jeśli używasz mysql workbench 6.3. (Najprawdopodobniej działa również w przypadku innych wersji)
Kliknij prawym przyciskiem myszy swój schemat i „Przeszukaj dane tabeli”, wprowadź swoją wartość i naciśnij „Rozpocznij wyszukiwanie”. Otóż to.
źródło
Oto moje rozwiązanie tego problemu
źródło
CALL findAll('tbl_test','abb')
brakuje mi tego błędu: # 1267 - Nielegalna mieszanka zestawień (utf8_general_ci, IMPLICIT) i (utf8_unicode_ci, IMPLICIT) do operacji '=' Czy możesz to naprawić? Dzięki!To prosty sposób, który znam. Wybierz swoją bazę danych w PHPMyAdmin i przejdź do zakładki „Szukaj” i napisz, co chcesz znaleźć i gdzie będziesz szukać. Wybierz wszystkie tabele, jeśli będziesz wyszukiwać słowa ze wszystkich tabel. Następnie „GO” i sprawdź wynik.
źródło
Używam HeidiSQL to przydatne i niezawodne narzędzie przeznaczone dla twórców stron internetowych korzystających z popularnego serwera MySQL.
W HeidiSQL możesz nacisnąć Shift + Ctrl + F i możesz znaleźć tekst na serwerze we wszystkich tabelach. Ta opcja jest bardzo przydatna.
źródło
Możesz użyć
Następnie pobierz kolumny w tych tabelach (w pętli) za pomocą
a następnie za pomocą tych informacji utwórz wiele wielu zapytań, które możesz również UNIONOWĄ, jeśli potrzebujesz.
Ale jest to bardzo ciężkie w bazie danych. Zwłaszcza jeśli wykonujesz wyszukiwanie LIKE.
źródło
SHOW TABLES FROM <db_name>
jest bardziej precyzyjnyTo rozwiązanie
a) jest tylko MySQL, nie jest potrzebny żaden inny język,
b) zwraca wyniki SQL, gotowe do przetworzenia!
źródło
#1243 - Unknown prepared statement handler (stmt) given to EXECUTE
gdy uruchamiam zapytanie w Phpmyadmin w celu przeszukiwania całej bazy danychZmodyfikowałem nieco odpowiedź Oliviera na PHP, aby:
pokaż całkowitą liczbę wyników
źródło
Zbudowałem na podstawie poprzedniej odpowiedzi i mam to, dodatkowe wypełnienie, aby móc wygodnie połączyć wszystkie wyniki:
Najpierw uruchom to, a następnie wklej i uruchom wynik (bez edycji), a wyświetli się wszystkie nazwy tabel i kolumny, w których używana jest wartość.
źródło
WHERE NOT A.TABLE_SCHEMA IN ('mysql', 'innodb', 'performance_schema', 'information_schema')
a nawet lepiej, wykonać go, sprawdzić używane schematy i ustawić używany schemat tam, gdzie zamiast tego wszystkie inne.Mam to do pracy. wystarczy zmienić zmienne
źródło
Zrobiłem to za pomocą HeidiSQL. Nie jest łatwo go znaleźć, ale naciskając Ctrl + Shift + F wyświetla okno dialogowe „Narzędzia tabel”. Następnie wybierz to, co chcesz przeszukać (Pełna baza danych do pojedynczej tabeli), wprowadź wartość „Tekst do znalezienia” i kliknij „Znajdź”. Stwierdziłem, że jest zaskakująco szybki (870 MB db w mniej niż minutę)
źródło
Użyłem Union do połączenia ze sobą zapytań. Nie wiem, czy jest to najbardziej wydajny sposób, ale działa.
źródło
Jest fajna biblioteka do czytania wszystkich stolików, ridona
źródło
Nie wiem, czy jest to tylko w najnowszych wersjach, ale kliknięcie prawym przyciskiem myszy
Tables
opcji wNavigator
panelu powoduje wyświetlenie opcji o nazwieSearch Table Data
. Spowoduje to otwarcie pola wyszukiwania, w którym należy wpisać ciąg wyszukiwania i nacisnąć Wyszukaj.Musisz wybrać tabelę, którą chcesz przeszukać w lewym okienku. Ale jeśli przytrzymasz klawisz Shift i wybierzesz jak 10 tabel jednocześnie, MySql da sobie z tym radę i zwróci wyniki w ciągu kilku sekund.
Dla każdego, kto szuka lepszych opcji! :)
źródło