带有--where子句的mysqldump不起作用

nod*_*jsj 21 mysql sql mysqldump

 mysqldump -t -u root -p  mytestdb mytable --where=datetime LIKE '2014-09%'
Run Code Online (Sandbox Code Playgroud)

这就是我正在做的,它返回:

mysqldump: Couldn't find table: "LIKE"
Run Code Online (Sandbox Code Playgroud)

我试图返回所有在列的行datetimelike 2014-09的意思是"整个9月行".

Leo*_*era 41

您可能需要使用引号:

mysqldump -t -u root -p  mytestdb mytable --where="datetime LIKE '2014-09%'"
Run Code Online (Sandbox Code Playgroud)

  • 这里的原因是shell默认情况下会破坏空格上的参数,因此它会将其解释为三个不相关的参数.引用将它们组合在一起. (3认同)

Tim*_*sky 5

使用 LIKE 选择日期不是一个好主意。我在一个项目中看到了这种方法。这会导致巨大的 DBMS 负载和缓慢的系统操作,因为没有使用此表列的索引。

如果您需要选择日期范围,请使用:

where datetime between '2014-09-01' and '2014-09-30 23:59:59'
Run Code Online (Sandbox Code Playgroud)