sql >> データベース >  >> RDS >> Mysql

いくつかのワイルドカードに一致するMySQLデータベースを削除しますか?

    基本的な考え方は、データベースで「テーブルの表示」を実行し、その結果を使用して必要なテーブルを選択することです。 MySQLでは「テーブルの表示」の結果セットで何もできないと思いますが、おそらく間違っています。

    シェルを使用した手っ取り早い解決策は次のとおりです。

    mysql -u your_user -D your_database_name -e "show tables" -s | 
      egrep "^Whatever_" | 
      xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"
    

    これにより、「Whatever_」で始まるテーブルを削除するためのすべてのシェルコマンドが出力されます。これらのコマンドを実際に実行する場合は、「echo」という単語を削除してください。

    編集 :上記の説明を忘れました!あなたがシェルスクリプトにどれほど精通しているかはわかりませんが、ここに行きます:

    mysql -u your_user -D your_database_name -e "show tables" -s
    

    「Tables_in_your_database_name」というヘッダーを付けて、すべてのテーブルのリストを出力します。そこからの出力は、次のコマンドを介してパイプされます(|記号は、渡された場合のように「パイプされた」を意味します)。

    egrep "^Whatever_"
    

    「Whatever_」という単語で始まる行(^記号は「存在する」を意味します)を検索し、それらのみを出力します。最後に、「Whatever_*」テーブルのリストを次のコマンドでパイプ処理します。

    xargs -I "@@" echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"
    

    これは、テーブル名のリストの各行を取得し、コマンドの「@@」の代わりにそれを挿入します

    echo mysql -u your_user -D your_database_name -e "DROP TABLE @@"
    

    したがって、「Whatever_1」、「Whatever_2」、「Whatever_3」という名前のテーブルがたくさんある場合、生成されるコマンドは次のようになります。

    echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
    echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
    echo mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"
    

    次のように出力されます:

    mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_1"
    mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_2"
    mysql -u your_user -D your_database_name -e "DROP TABLE Whatever_3"
    

    私はそれが十分な詳細であり、私があまりにも多くの情報で頭上で誰かを打ち負かしているだけではないことを願っています。頑張って、「DROPTABLE」コマンドを使用するときは注意してください!



    1. MySQLは、連続する同一の結果に対して最初と最後のレコードを返します

    2. MySQLとMariaDBのスキーマ管理のヒント

    3. .NETを介したPL/SQLコレクション型パラメータを使用したOracleプロシージャの呼び出し

    4. 外部キーを見つけるためのクエリ