MySQLデータベースのすべてのテーブルのすべてのフィールドを検索します


298

MySQLデータベースのすべてのテーブルのすべてのフィールドで、指定された文字列を検索したい。

SELECT * FROM * WHERE * LIKE '%stuff%'

このようなことをすることは可能ですか?


2
このブログは役立つかもしれません:winashwin.wordpress.com/2012/08/28/mysql-search

回答:


81

information_schemaスキーマをのぞくことができます。すべてのテーブルとテーブル内のすべてのフィールドのリストがあります。次に、このテーブルから取得した情報を使用してクエリを実行できます。

関連するテーブルは、SCHEMATA、TABLES、およびCOLUMNSです。テーブルがスキーマで作成される方法を正確に構築できるような外部キーがあります。


49
これは私が欲しかった答えではありませんが、私は真実を受け入れなければなりません。:Dありがとう
RSilva 2009年

1
これは正しいですが、@ Dan Ratherの回答も役に立ちました。私が探していたdbはあいまいに設定されており、列の名前やテーブルが何であるかを確認するだけではわからないためです...
DrCord

12
information_schemaテーブルではなくデータベースです。どのテーブルを検索するかについての明確化information_schemaが良いでしょう!
CaptSaltyJack 2014

3
MySqlがすべてのテーブルを検索する方法を提供しなかったことは、私にとって一種の陽気です。かなり初歩的なオプションのようです
Kolob Canyon


442

SQLDumpデータベース(およびそのデータ)を実行してから、そのファイルを検索できます。


20
mysqldumpの--extended-insert = FALSEフラグを使用して、出力を読みやすくすることを忘れないでください。
Benubird 2013年

26
私がそうだったように、鉛筆のコメントが何であるか疑問に思っている方のために:snopes.com/business/genius/spacepen.asp
Jason Swett

2
これは、DB全体を検索するための「標準」の(事実上の)方法です。mysqldump -T指定したディレクトリのテーブルごとに2つのファイルを作成するのが好きです。次にgrep <search> *、dirで、返されるのはtablename.txtまたは.sqlファイルです。txtファイルはテーブルのデータ(タブ区切り、Excelで開くにはcsvに名前変更)を保持し、sqlはテーブルの定義を保持します。このようにして、すべてを検索し、データの場所を簡単に絞り込むことができます。ただし、この方法は、特定の環境で機能させるのが非常に難しい場合があります。ここではスタックオーバーフローが非常に役立ちます。
Joel Mellon

大きなSQLがある場合、またはアーカイブされている場合-サーバーのMCで開くことができます。次に、表示
Vitaly Zdanevich

1
いい提案です!しかし、dbダンプファイルが本当に大きい場合は機能しません(私が今持っている状況:))
Boban

207

phpMyAdminがインストールされている場合は、「検索」機能を使用してください。

  • DBを選択してください
  • DBが選択されていることを確認してください(つまり、テーブルではありません。そうしないと、まったく異なる検索ダイアログが表示されます)。
  • 「検索」タブをクリックします
  • 必要な検索用語を選択してください
  • 検索するテーブルを選択してください

私はこれを最大250テーブル/ 10GBデータベース(高速サーバー上)で使用しており、応答時間は驚くべきものです。


8
私たちのデータベースの1つは92.7Gbであり、このオプションは問題なく機能しました。
優れた

5
すべてのphpMyAdminでできることをいつも忘れています。それは素晴らしいツールです!
Ville

1
非常に高速で、私のMagento dbで役立ちます。数秒で探していたデータのフィールドと、それを参照している他のすべてのテーブルが見つかりました。
mtrueblood 2014

1
MySQL Workbenchにもこの機能があります。「データベース>>検索テーブルデータ...」
matt wilkie

1
いいね!では、phpmyadminで検索した文字列をどのように置き換えますか?
Pathros

46

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;
}

これは知らない人のためのフォーです。
Nandostyle

設定$mysqli:このような$mysqli = new mysqli('localhost', 'root', 'hunter2', 'my_database');
アダム・テイラー

また、私は非常に置き換えることをお勧め$colum"`$colum`"そう予約語のフィールドが問題の原因ではないということ
アダム・テイラー

41

このプロジェクトを使用できます:http : //code.google.com/p/anywhereindb

これにより、すべてのテーブルのすべてのデータが検索されます。


PHP7では動作しなくなりました。(mysql_connectはPHP 5.5.0で非推奨、PHP 7.0.0で削除)
iDev247

12

stored proceduresペストのように回避している場合、またはmysql_dump権限が原因で実行できない場合、または他のさまざまな理由が発生した場合

私は次のような3ステップのアプローチを提案します。

1)このクエリは、結果セットとして一連のクエリを作成します。

# =================
# VAR/CHAR SEARCH
# =================
# BE ADVISED USE ANY OF 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 USE WITH 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 INDEX ON OR NOT
# 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%'
;

結果は次のようになります。

これらの結果を別のクエリウィンドウにコピーする

2)次に、ちょうどRight Click使用できますCopy Row (tab-separated)

ここに画像の説明を入力してください

3)新しいクエリウィンドウに結果を貼り付けて、思い通りに実行します。

詳細:オプションをオンにしない限り、通常はワークベンチに表示されないシステムスキーマは除外しShow Metadata and Internal Schemasます。

これはANALYZE、必要に応じてHOSTまたはDB全体にすばやくアクセスできるようにするため、またはOPTIMIZEパフォーマンスの向上をサポートするステートメントを実行するために行いました。

これにはさまざまな方法がある思いますが、次の方法でうまくいきます。

-- ========================================== DYNAMICALLY FIND TABLES AND CREATE A LIST OF QUERIES IN THE RESULTS TO ANALYZE THEM
SELECT 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 THEM
SELECT CONCAT('OPTIMIZE TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbname';

MySQLバージョンでテスト済み:5.6.23

警告:次の場合は実行しないでください:

  1. テーブルロックの発生に懸念がある(クライアント接続に注意してください)
  2. あなたは自分が何をしているかわからない。

  3. あなたはDBAを怒らせようとしています。(あなたはあなたの机に迅速さで人々を持っているかもしれません。)

乾杯、ジェイ;-]


1
ライブデータベースで実行する必要はありませんが、特定のデバッグタスクには役立ちます。ただし、列タイプが文字列と比較されない場合、これは失敗します。つまり、int列です。
Michael Thessel 2017年

すばらしい点として、blob、chars、またはintを介して検索する3つの選択肢を追加しました。これは単なる一般化であり、常に注意して使用する必要があります。あなたが言ったように、本番環境では決してそうではありませんが、それは通常、「インターネットでスクリプトを見つけて理解していないが、まだ実行している」という理由で解雇されます。
JayRizzo 2017年

8

また、自分のmysqlクローラーを使用していくつかのワードプレス構成を検索しました。インターフェースとデータベースの両方でそれを見つけることができず、データベースダンプが重すぎて読めませんでした。今はそれなしではどうしようもない。

@Olivierのものと同じように機能しますが、エキゾチックなデータベース/テーブル名を管理し、LIKEジョーカーセーフです。

<?php

$database = 'database';
$criteria = '*iemblo'; // you can use * and ? as jokers

$dbh = new PDO("mysql:host=127.0.0.1;dbname={$database};charset=utf8", 'root', '');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$tables = $dbh->query("SHOW TABLES");
while (($table = $tables->fetch(PDO::FETCH_NUM)) !== false)
{
    $fields = $dbh->prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?");
    $fields->execute(array ($database, $table[0]));

    $ors = array ();
    while (($field = $fields->fetch(PDO::FETCH_NUM)) !== false)
    {
        $ors[] = str_replace("`", "``", $field[0]) . " LIKE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(:search, '\\\\', '\\\\\\\\'), '%', '\\%'), '_', '\\_'), '*', '%'), '?', '_')";
    }

    $request = 'SELECT * FROM ';
    $request .= str_replace("`", "``", $table[0]);
    $request .= ' WHERE ';
    $request .= implode(' OR ', $ors);
    $rows = $dbh->prepare($request);

    $rows->execute(array ('search' => $criteria));

    $count = $rows->rowCount();
    if ($count == 0)
    {
        continue;
    }

    $str = "Table '{$table[0]}' contains {$count} rows matching '{$criteria}'.";
    echo str_repeat('-', strlen($str)), PHP_EOL;
    echo $str, PHP_EOL;
    echo str_repeat('-', strlen($str)), PHP_EOL;

    $counter = 1;
    while (($row = $rows->fetch(PDO::FETCH_ASSOC)) !== false)
    {
        $col = 0;
        $title = "Row #{$counter}:";
        echo $title;
        foreach ($row as $column => $value)
        {
            echo
            (($col++ > 0) ? str_repeat(' ', strlen($title) + 1) : ' '),
            $column, ': ',
            trim(preg_replace('!\s+!', ' ', str_replace(array ("\r", "\t", "\n"), array ("", "", " "), $value))),
            PHP_EOL;
        }
        echo PHP_EOL;
        $counter++;
    }
}

このスクリプトを実行すると、次のようなものが出力されます。

---------------------------------------------------
Table 'customers' contains 1 rows matching '*iemblo'.
---------------------------------------------------
Row #1: email_client: my@email.com
        numero_client_compta: C05135
        nom_client: Tiemblo
        adresse_facturation_1: 151, My Street
        adresse_facturation_2: 
        ville_facturation: Nantes
        code_postal_facturation: 44300
        pays_facturation: FR
        numero_tva_client: 
        zone_geographique: UE
        prenom_client: Alain
        commentaires: 
        nom_societe: 
        email_facturation: my@email.com

1
次のエラーが発生します:致命的なエラー:キャッチされない例外 'PDOException'とメッセージ 'SQLSTATE [42000]:構文エラーまたはアクセス違反:1064 SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、 'key LIKE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(' 180well * '、' \\ '、' \\\\ ')、'% '、' at line 1 '
LLBBL

6

これは、すべての列とテーブルを取得する最も簡単なクエリです

SELECT * FROM information_schema.`COLUMNS` C WHERE TABLE_SCHEMA = 'YOUR_DATABASE'

すべてのテーブルまたは名前に特定の文字列が含まれるテーブルは、phpMyAdminの[検索]タブで検索できます。

素敵なクエリがあります... \ ^。^ /


20
そして値はどうですか?
themhz 2013年

6

MySQL Workbenchを使用すると、複数のテーブルを選択し、DBのすべてのテーブルでテキストの検索を実行するのが簡単です;-)


ありがとうございました!初めてワークベンチを使用しました。かなり直感的で、必要なテーブルが表示され、そこから見つけることができました。
joshmiller

6

この質問は古いものですが、mysql workbench 6.3を使用している場合に実行できる方法は次のとおりです。(おそらく他のバージョンでも動作します)

スキーマを右クリックして[テーブルデータを検索]をクリックし、値を入力して[検索を開始]をクリックします。それでおしまい。


6

これが私の解決策です

DROP PROCEDURE IF EXISTS findAll;
CREATE PROCEDURE `findAll`( IN `tableName` VARCHAR( 28 ) , IN `search` TEXT )
BEGIN
       DECLARE finished INT DEFAULT FALSE ;
       DECLARE columnName VARCHAR ( 28 ) ;
       DECLARE stmtFields TEXT ;
       DECLARE columnNames CURSOR FOR
              SELECT DISTINCT `COLUMN_NAME` FROM `information_schema`.`COLUMNS`
              WHERE `TABLE_NAME` = tableName ORDER BY `ORDINAL_POSITION` ;
       DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = TRUE;
       SET stmtFields = '' ;
       OPEN columnNames ;
       readColumns: LOOP
              FETCH columnNames INTO columnName ;
              IF finished THEN
                     LEAVE readColumns ;
              END IF;
              SET stmtFields = CONCAT(
                     stmtFields , IF ( LENGTH( stmtFields ) > 0 , ' OR' , ''  ) ,
                     ' `', tableName ,'`.`' , columnName , '` REGEXP "' , search , '"'
              ) ;
       END LOOP;
       SET @stmtQuery := CONCAT ( 'SELECT * FROM `' , tableName , '` WHERE ' , stmtFields ) ;
       PREPARE stmt FROM @stmtQuery ;
       EXECUTE stmt ;
       CLOSE columnNames ;
END;

1
を実行するとCALL findAll('tbl_test','abb')、次のエラーが発生します。#1267-オペレーション '='の照合(utf8_general_ci、IMPLICIT)と(utf8_unicode_ci、IMPLICIT)の組み合わせが不正です。修正できますか?ありがとう!
Davuz、2012年

6

これは私が知っている簡単な方法です。PHPMyAdminでDBを選択し、[検索]タブに移動して、何を検索し、どこを検索するかを記述します。すべてのテーブルから単語を検索する場合は、すべてのテーブルを選択します。次に「GO」して結果を確認します。Wordpress DBからVCD(バックドア)という単語を見つけて削除したい


5

HeidiSQLは、人気のあるMySQLサーバーを使用するWeb開発者向けに設計された、信頼性の高い便利なツールです。

HeidiSQLでは、Shift + Ctrl + Fを押すと、サーバー上のすべてのテーブルでテキストを検索できます。このオプションは非常に便利です。


+1はうまく機能しているようで、他のいくつかの回答に関与する手間を省くための便利なツールです。また、それはあなたが検索したデータベース(複数可)を選択することができますことは注目に値する。
スティーブ・チェンバース

3

あなたは使うことができます

SHOW TABLES;

次に、これらのテーブルの列を(ループで)取得します

SHOW COLUMNS FROM table;

その後、その情報を使用して多くのクエリを作成し、必要に応じてUNIONすることもできます。

しかし、これはデータベースにとって非常に重いものです。特にLIKE検索を行う場合。


SHOW TABLES FROM <db_name>より正確
vladkras

3

このソリューションは
、a)MySQLのみであり、他の言語は不要であり、
b)SQL結果を返し、処理の準備ができています!

#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 all in 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 and execute the statement
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

これらの種類のソリューションの場合、通常はphpfiddlerに追加すると、ソリューションを確認したりコメントしたりできるようになります。:)
pal4life 2014年

#1243 - Unknown prepared statement handler (stmt) given to EXECUTEPhpmyadminでデータベース全体を検索するクエリを実行すると、エラーが発生します
Vicky Dev

@VickyDevご質問から1年以上が経過しました。ごめんなさい。それにもかかわらず、stmtがEXECUTEの上の行で宣言されているため、スクリプトに何か問題があると思います。MySQLのどのバージョンを使用していますか?
Chonez

2

私はオリビエのPHPの答えを少し変更しました:

  • 文字列が見つかった結果を出力する
  • 結果のないテーブルを省略
  • 列名が検索入力と一致する場合は出力も表示する
  • 結果の総数を表示

    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;
    }

1

私は以前の答えに基づいて構築し、すべての出力を便利に結合できるようにするためにいくつかの追加のパディングを持っています:

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'
UNION SELECT 'SELECT '''

-- for exact match use: A.COLUMN_NAME, ' LIKE \'Value\' instead

まずこれを実行し、次に貼り付けて結果を実行します(編集なし)。値が使用されているすべてのテーブル名と列が表示されます。


1
列値の4つのチェックは、最も単純な方法ではありません。あなたはできる/すべきWHERE NOT A.TABLE_SCHEMA IN ('mysql', 'innodb', 'performance_schema', 'information_schema')か、またはさらに良く、それを実行し、使用されるスキーマをチェックし、代わりに他のすべてを除外する場所に使用されたスキーマを設定します。
bradbury9 2018

1

これでうまくいきました。変数を変更するだけです

$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>";

1

私はこれをHeidiSQLを使用して行いました。見つけるのは簡単ではありませんが、Ctrl + Shift + Fを押すと、「テーブルツール」ダイアログが表示されます。次に、検索対象(データベース全体から単一のテーブル)を選択し、「検索するテキスト」の値を入力して、「検索」をクリックします。私はそれが驚くほど速いことを発見しました(1分未満で870MiB db)


0

Unionを使用してクエリをつなぎ合わせました。それが最も効率的な方法であるかどうかはわかりませんが、機能します。

SELECT * FROM table1 WHERE name LIKE '%Bob%' Union
SELCET * FROM table2 WHERE name LIKE '%Bob%';

この回答の問題は、可変で未知の数のテーブルがあることです
bradbury9 '10

0

すべてのテーブルを読むための素晴らしいライブラリがあります、リドーナ

$database = new ridona\Database('mysql:dbname=database_name;host=127.0.0.1', 'db_user','db_pass');

foreach ($database->tables()->by_entire() as $row) {

....do

}

0

これが最近のバージョンのみかどうかはわかりませんがTablesNavigatorペインのオプションを右クリックすると、というオプションがポップアップ表示されますSearch Table Data。これにより、検索文字列を入力して検索をヒットする検索ボックスが開きます。

左側のペインで検索するテーブルを選択する必要があります。しかし、Shiftキーを押しながら一度に10個のテーブルを選択すると、MySqlはそれを処理して結果を数秒で返すことができます。

より良いオプションを探している人のために!:)


このすべてをどのアプリケーションで行っていますか?
Jon Schneider、

彼はNavigatorアプリケーションを使用しています。
Damir Olejar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.