データなしのMySqlエクスポートスキーマ


491

JavaプログラムでMySqlデータベースを使用していますが、プログラムを他の人に提供したいと思います。

データなしでMySqlデータベース構造をエクスポートするにはどうすればよいですか?

回答:


962

--no-datamysqldumpコマンドのオプションで実行できます

mysqldump -u root -p --no-data dbname > schema.sql

11
私見、mysqldump最高の答えです。MySQL Administratorは放棄され、MySQL Workbenchは依然としてかなりバグがあります。
アルバロゴンザレス

49
また、--single-transactionテーブルロックが不要またはできない場合は、このオプションの使用を検討してください。
ジム、

47
-dは、略して--no-dataです。
marstone 2014年

36
データベースにストアドプロシージャ/関数がある場合は--routinesの追加も検討してください
crafterm

15
デフォルトでは、これにはCREATE DATABASEコマンドが含まれていません。含めるには、交換するdbname--databases dbname(速記:-B dbname)。次に、別のサーバーにインポートするには、次を使用しますmysql -u root -p < schema.sql
Sean

88

はい、次mysqldump--no-dataオプションで使用できます。

mysqldump -u user -h localhost --no-data -p database > database.sql

4
これは、10秒前に投稿され、承認された回答と同一ではない場合でもより完全であるにもかかわらず、承認された回答ではないことに驚いています。
user5532169 2018

1
@ zypA13510、明らかに10秒は749票の差になる可能性があります。
emallove

17

--no-dataオプションで個々のテーブルを抽出することもできます

mysqldump -u user -h localhost --no-data -p database tablename > table.sql


6

出力を使用せずにダンプします。

mysqldump --no-data <database name> --result-file=schema.sql

4

ただし、-no-dataオプションにはビュー定義が含まれないことに注意してください。したがって、次のようなビューがある場合は、ビューv1を選択しますaidAS idacreated_dateAS created_date からt1; --no-dataオプションを使用すると、ビュー定義は次の作成ビューに変更されますv1 select 1 AS id、1 AScreated_date



2

IntelliJを使用している場合は、データベースビューを有効にできます(表示->ツールウィンドウ->データベース)

そのビュー内でデータベースに接続します。次に、データベースを右クリックして[DDLのコピー]を選択します。他のIDEが同様の機能を提供する場合があります。

IntelliJ DDL


2
私は試してみましたが、トリガーは含まれていません(神は他に何も知らないのです)
phil294

2

すべてのデータベースからすべてのテーブルをダンプし、データがない場合(データベースとテーブルの構造のみ)、次のように使用できます。

mysqldump -P port -h hostname_or_ip -u username -p --no-data --all-databases > db_backup.sql

これにより、mysqlサーバーにロードして新しいデータベースを作成できる.sqlファイルが生成されます。これの使用例は本番環境ではそれほど多くありませんが、デモWebサイトにリンクされているサーバーをリセットするために毎週これを行っているため、ユーザーが週の何をしても、日曜の夜はすべてが「新しい」に戻ります。 )


1

個々のテーブルの作成スクリプトを取得するには:
-すべてのテーブルを選択(Shiftキーを使用)
-テーブル名を右クリックして、[クリップボードにコピー]> [ステートメントの作成]をクリックします。


0

シェル> mysqldump --no-data --routines --events test> dump-defs.sql


1
StackOverflowへようこそ。もう少し情報と制約を与えると、これから素晴らしい答えを得ることができます。
Janhoo

0

--routinesオプションと--eventsオプションを追加して、ストアドルーチンとイベントの定義も含めます

mysqldump -u <user> -p --no-data --routines --events test > dump-defs.sql

-1

以下の方法で服用できます

mysqldump -d <database name> > <filename.sql> // -d : without data

それがあなたを助けることを願っています


6
この答えは、他の答えがまだ言っていないことを何も追加しません。
ダニエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.