phpMyAdminソースコードを確認できます(オープンソースソフトウェアの利点)。 export.phpスクリプトとlibraries/export/sql.phpスクリプトファイルのサポート関数を確認してください。
要約すると、phpMyAdminが行うことは次のとおりです。
- 指定されたデータベース内のテーブルのリストを取得します(SHOW TABLES FROM ...)、
- 各テーブルの作成クエリを取得します(SHOW CREATE TABLE ...)、
- 解析して列定義を抽出します
- すべてのデータを取得(SELECT * FROM ...)
- 列データに従ってクエリを作成します。
私は自分のアプリ用に同様のコードを作成しましたが(バックアップの目的で、phpMyAdminのGPLライセンスで使用が許可されていない場合)、DESCRIBEを使用して列の定義を取得します。 DESCRIBE出力よりも多くの情報が含まれているため、SHOWCREATETABLE出力を解析するのではないかと思います。
SQLセンテンスを生成するこの方法では、エスケープを処理するために少し注意が必要ですが、型の変換、データのフィルタリングまたはサニタイズなどを行うことができるため、ある程度の柔軟性があります。また、mysqldumpなどのツールを使用するよりもはるかに低速である必要があります。使用可能なすべてのメモリを消費しないように注意してください(すぐに書き込み、頻繁に書き込み、すべてをメモリに保持しないでください)。
サーバーからサーバーへの移行プロセスを実装する場合は、PHPですべてを行う場合を除いて、シェルスクリプトを使用してmysqldumpを直接呼び出す方が簡単な場合があります。