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

パターンに基づいてmysqldumpのテーブルをスキップする

    残念ながら、 mysqldump パラメータを正規表現パターンとして指定できないように、テーブル名は完全に修飾されている必要があります。

    ただし、スクリプトを使用してmysqldumpを生成するには、それをinformation_schemaに接続し、次のようなものを使用してすべてのテーブルを一覧表示します。

    SELECT TABLE_NAME, TABLE_SCHEMA
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'mysql', 'PERFORMANCE_SCHEMA');
    

    次に、--ignore-table ^testの正規表現に一致するすべてのテーブル名のパラメーター 。

    スキーマのみをダンプし、データをダンプしない場合は、を使用できます。 --no-data=true パラメータとして。

    すべての非テストテーブルのすべてを取得したいが、別のテーブルのスキーマのみを取得したい場合は、2つの別々のmysqldumpコマンドを使用する必要があります(1つはすべてのテストテーブルのignore-tableに加え、スキーマは1つだけ、もう1つはのみスキーマのみのテーブルのスキーマ)>>を使用して2番目のテーブルを出力ファイルに追加します 追加 オペレーター

    したがって、結果のスクリプトは次のようなものを生成する可能性があります:

    mysqldump -u root -ptoor databaseName --ignore-table=testTable1 --ignore-table=testTable2 --ignore-table=testTable3  --ignore-table=schemaOnlyTable > mysqldump.sql
    
    mysqldump -u root -ptoor databaseName schemaOnlyTable --no-data=true >> mysqldump.sql
    



    1. 1対多の関係を維持する場合の制約違反

    2. SQLAlchemyセッションと接続の関係

    3. MySQLでのDebeziumフラッシュタイムアウトとOutOfMemoryErrorエラー

    4. テンプレートデータベースコレクションのコーディングを変更する方法