MySQLサーバーにテーブルがあり、テーブルを再作成するSQLを取得したいと考えています。
クエリを取得してSQLテーブルを再作成するにはどうすればよいですか?
mysqldumpはそれを行うことができます- http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
次のように使用できます。
mysqldump [databasename] [tablename] > mysqltablesql.sql
MySQLは SHOW CREATE TABLE
は、テーブルの作成に使用されたSQLを返します。
彼らのドキュメントから:
mysql> SHOW CREATE TABLE t;
CREATE TABLE t (
id INT(11) default NULL auto_increment,
s char(60) default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM
これは、サーバー上のCLIではなく、DBへの接続だけがある場合に役立ちます。 CLIがある場合は、liamgriffithsが推奨するようにmysqldumpを使用します。
PhpMyAdminを使用している場合は、テーブルを選択して[エクスポート]タブをクリックします。出力タイプの1つはSQLです。これを選択すると、テーブルを作成し、現在テーブルにあるすべてのデータを挿入するSQLスクリプトが生成されます。ダンプデータオプションの下で「構造とデータ」を選択していることを確認してください
mysqldump [オプション]データベース[テーブル]> backup-file.sql
テーブルを指定しない場合、または--databasesまたは--all-databasesを使用する場合は、データベース全体がダンプされます。
Mysqldump --helpを実行すると、mysqldumpのバージョンがサポートするオプションのリストを取得できます。
--quickまたは--optなしでmysqldumpを実行すると、mysqldumpは結果をダンプする前に結果セット全体をメモリにロードします。大きなデータベースをダンプする場合、これはおそらく問題になります。
PhpMyAdminにアクセスできる場合は、必要なテーブルの[エクスポート]タブからこのコードを取得できます。
SQLを選択し、エクスポートタイプが「INSERT」に設定された「構造」(「テーブルの作成」コード)および「データ」(「挿入」コード)をエクスポートすることを確認します。
mysqldump
の@liamgriffithsプロポーザルを使用しますが、create table <new-table-name> like <old-table-name>
に続いてinsert into <new-table-name> select * from <old-table-name>
を試すこともできます