仅限mysql转储表

dol*_*oug 20 mysql export

在我的数据库中,我有一些表和视图.如何从命令行导出数据库中的所有表(而不是视图)?

tyl*_*erl 28

当前实现mysqldump不会创建没有视图的转储 - 此外,(上次我检查)视图实际上创建了两次 - 一次作为表,然后删除表并替换为视图.因此,您不能只过滤掉"CREATE VIEW"命令,除非该行为已被修改.

但是,mysqldump会将表列表作为数据库名称后面的参数.像这样的东西:

mysqldump -ujoe -pmysecret joesdb posts tags comments users
Run Code Online (Sandbox Code Playgroud)

  • 您甚至可以从MySQL的信息模式中查询表:`mysqldump the_db_i_want $(mysql -Ne"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA ='the_db_i_want'AND TABLE_TYPE ='BASE TABLE'") (2认同)

nav*_*sfx 22

要忽略数据库中的转储单个视图:

mysqldump -uusrname -ppwd -h hostname --ignore-table=db.view_name db > db.sql

要忽略Db中的多个视图转储:

mysqldump -uusrname -ppwd -h hostname --ignore-table=db.view1 --ignore-table=db.view2 db > db.sql

注意:多次忽略转储使用--ignore-table选项的多个视图.


小智 9

从数据库备份单个表

mysqldump -uUSERNAME -pPASWORD DATABASE TABLE_NAME --host=HOST_NAME > c:\TABLE_NAME.sql
Run Code Online (Sandbox Code Playgroud)

从数据库转储中还原单个表

mysql -uUSERNAME -pPASSWORD DATABASE --host=HOST_NAME < c:\TABLE_NAME.sql
Run Code Online (Sandbox Code Playgroud)


sou*_*rge -2

您可以使用 mysqldump 和选项--ignore-table来单独排除视图。或者使用 mysqldump 并通过应用程序/手动删除视图。grep 可能是一个选项:

grep -v "CREATE VIEW" db.dump > db-without-views.dump
Run Code Online (Sandbox Code Playgroud)

  • 为什么这被标记为正确,这根本没有帮助。 (19认同)
  • 请注意,转储程序会在每个视图中写入多行,因此仅排除提到的第一行将会在转储中留下错误。 (3认同)