czy możliwe jest przeszukiwanie całych tabel bazy danych (wiersza i kolumny) w celu znalezienia określonego ciągu.
Mam bazę danych o nazwie A z około 35 tabelami, muszę wyszukać ciąg o nazwie „hello” i nie wiem, w której tabeli zapisano ten ciąg. Czy to możliwe?
Korzystanie z MySQL
Jestem administratorem Linuksa i nie znam baz danych, byłoby bardzo pomocne, gdybyś mógł wyjaśnić zapytanie.
Odpowiedzi:
Więcej: http://winashwin.wordpress.com/2012/08/28/mysql-search/
źródło
W lipcu 2012 roku napisałem ten post
Zapytanie, aby znaleźć i zamienić tekst we wszystkich tabelach i polach bazy danych mysql
Wykorzystuje tabelę information_schema.columns do pobrania każdego pola CHAR, VARCHAR i TEXT i wykonania tekstowej zamiany .
Proszę przejrzeć mój stary link i użyć jego paradygmatu, aby przeprowadzić wyszukiwanie.
Na przykład spowoduje to utworzenie osobnego WYBORU dla każdej kolumny tekstowej w każdej tabeli
Utwórz z nim plik tekstowy Giant SQL. Następnie uruchom skrypt Giant SQL:
Dane wyjściowe informują o bazie danych, tabeli i kolumnie, w której pojawiają się dane.
Spróbuj !!!.
EDYTOWAĆ:
POWINIEN: dodać dwa tylne tiki pokazane poniżej dla tabel, które mają spacje w nazwie.
źródło
Stosując inne podejście, które nie wymaga budowania zapytań SQL, opracowałem CRGREP jako bezpłatne narzędzie wiersza poleceń open source, które będzie grepować bazy danych (w tym MySQL) i obsługuje zarówno proste „fred customer.name” wyszukuje „fred” w „name” „kolumna tabeli„ klienta ”do bardziej złożonego dopasowania wzorca, takiego jak„ fr? d * .author ”do dopasowania wzorca względem wszystkich kolumn„ autora ”we wszystkich tabelach.
źródło
Możesz zwrócić wszystkie kolumny ze wszystkich tabel, które pasują do wszystkich poszukiwanych wartości naraz, budując odpowiedź RolandoMySQLDBA oraz używając
PREPARE
iEXECUTE
uruchamiając zapytanie .źródło
Jeśli możesz użyć bash - oto skrypt: Potrzebuje on dbread użytkownika z pass dbread w bazie danych.
Jeśli ktoś chce wyjaśnienia: http://infofreund.de/?p=1670
źródło
Jeśli jesteś administratorem Linuksa, powinieneś znać wiersz poleceń, więc ten byłby przydatny:
Zmień
root
/root
na dane uwierzytelniające mysql (lub użyj~/.my.cnf
),db_name
na nazwę bazy danych ifoo
na szukany tekst. Parametr--skip-extended-insert
dlamysqldump
wyświetli każde zapytanie w osobnych wierszach. Parametr--color=auto
dlagrep
podświetli Twój ciąg i-w
dopasuje całe słowo.źródło
Czy masz dostęp do phpMyAdmin? Posiada funkcję wyszukiwania dla każdej bazy danych.
lub użyj wybranego skryptu w wyniku (zmień nazwę_db):
źródło
Skupiam się na prostym rozwiązaniu szablonowym dla twojego pytania zaimplementowanym w plsql dla bazy danych Oracle , mam nadzieję, że dostosuję go do MySql, będąc prostym rzutem googleing. wszystko czego potrzebujesz to zbadanie schematu informacji na MySql i zastąpienie niektórych nazw tabel i kolumn.
W skrypcie:
ALL_TAB_COLUMNS
jest tabelą schematów informacyjnych zawierającą wszystkie kolumny tabeli „VARCHAR2”, „NVARCHAR2”, „NCHAR”, „CHAR” odnosi się do typów kolumn łańcuchowych w Oracle, musisz je zastąpić nazwami typów ekwiwalentów MySql% hello% to słowo kluczowe wyszukiwania zastąp je dowolnym ciągiem.
Rezultatem będzie kilka lub wiele skryptów SQL (opartych na typach kolumn w tabelach), a ich uruchomienie da odpowiedź.
Kolejną sprawą będzie wydajność i zużycie czasu.
mam nadzieję, że to się przyda
źródło
Jest fajna biblioteka do czytania wszystkich stolików, ridona
źródło
Użyj tej sztuczki z jedną linią kodu
nazwa_kolumny: wpisz nazwę wszystkich kolumn, w których szukasz.
nazwa_tabeli: Wpisz całą nazwę tabeli, w której szukasz.
źródło
Jeśli korzystasz z MySQL Workbench, kliknij prawym przyciskiem myszy schemat bazy danych i wybierz „Wyszukaj dane tabeli ...”, a następnie wypełnij formularz. Spowoduje to przeszukanie całej bazy danych. Kiedy (lub jeśli) pojawią się wyniki, kliknij strzałkę, aby rozwinąć. Wyświetli schemat, tabelę, dane klucza podstawowego, nazwę kolumny i rzeczywiste dane pasujące do wyszukiwania.
Wskazówka: jeśli nic się nie pojawi, spróbuj poszerzyć wyszukiwanie.
Należy pamiętać, że jest to tylko bardzo przydatne do wyszukiwania tekstu (
char
,varchar
itext
) typy danych.źródło