【问题标题】:mysqldump with multiple tables with or without where clause带有或不带有 where 子句的多个表的 mysqldump
【发布时间】:2015-11-28 20:15:23
【问题描述】:

我的数据库中有一组表,我必须对其进行转储 ( :D )。我的问题是我想从某些只能追溯到特定日期的表中获取一些数据,并希望保持其余表的完整性。

我想出的查询是这样的:

mysqldump -h<hostname> -u<username> -p <databasename> 
<table1> <table2> <table3> 
<table4> --where 'created > DATE_SUB(now(), INTERVAL 7 DAY)',
<table5> --where 'created > DATE_SUB(now(), INTERVAL 7 DAY)
--single-transaction --no-create-info | gzip
> $(date +%Y-%m-%d-%H)-dump.sql.gz

上面代码的问题是table1、table2和table3会尝试取table4的where子句。我不希望这样的原因会导致这些表中不存在 created 字段的错误。

我尝试将逗号 (,) 放在表名之后,就像我在 where 子句之后所做的那样,但它不起作用。

在这一点上,我几乎陷入困境,别无选择,希望创建两个不同的 sql 转储文件,我不想这样做。

【问题讨论】:

    标签: mysql mysqldump


    【解决方案1】:

    进行两次转储,或者如果您不想进行两次转储,请尝试两个命令

    一个。

    mysqldump -h<hostname> -u<username> -p 
    <databasename>  <table1> <table2> <table3>
    --single-transaction --no-create-info > dumpfile.sql
    

    b.

    mysqldump -h<hostname> -u<username> -p <databasename> 
    <table4> --where 'created > DATE_SUB(now(), INTERVAL 7 DAY)',
    <table5> --where 'created > DATE_SUB(now(), INTERVAL 7 DAY)
    --single-transaction --no-create-info >> dumpfile.sql
    

    c。

    gzip dumpfile.sql
    

    【讨论】:

    • 哇!有效。非常感谢朋友。 '>>' 参数附加到我已经创建的转储中。太棒了。
    • 如果是linux那么mysqldump -h -u -p --single-transaction --no-create-info ; mysqldump -h -u -p --where 'created > DATE_SUB(now(), INTERVAL 7 DAY)' | gzip > $(date +%Y-%m-%d-%H)-dump.sql.gz
    • 它不适用于每个表的不同 where 条件
    【解决方案2】:

    因此,除非表具有公共外键字段,否则上述解决方案将不起作用。

    如果你看我下面的例子,user_addresses、user_groups 和 user_payment_methods 都有 user_id 字段。当mysqldump 执行 where 子句时,它将过滤这些表。

    mysqldump -u <username> -p <password> 
    user_addresses user_groups user_payment_methods 
    -w "user_id 
    in (select id from users where email like '%@domain.com')"
    --single-transaction| gzip > sqldump.sql.gz
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      相关资源
      最近更新 更多