在linux cmd行中,我将如何以yyyy-mm-dd格式附加一个mysql表名和今天的日期。例如,如果今天的日期是2018年4月13日,它会将tablename更改为tablename-2018-04-13。
我相信我已经接近从命令行进入mysql后所做的尝试:
ALTER TABLE database.tablename RENAME database.tablename-$(date +%Y-%m-%d);
这将生成一个错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near '-$(date +%Y-%m-%d)' at line 1
3条答案
按热度按时间qq24tv8q1#
所有的答案和评论都让我找到了最适合我的答案。我抛弃了-yyyy-mm-dd附加约定,因为它除了制造问题之外对我没有任何作用,正如上面@bill\u karwin所强调的那样。这是一个简单的bash命令,非常类似于上面@anthony的评论,对我很有用:
这会将表重命名为(例如,假设在4/15/18上运行)表_。
vwkv1x7d2#
您似乎在mysql客户机中使用bash命令替换。这是行不通的,因为sql对bash语法一无所知,比如
$()
.另一个问题是必须使用标识符,而不是字符串。表的名称不能是表达式,必须在alter语句中修复,然后才能对其进行解析。
您可以使用准备和执行:
注意我更改了你的表名,因为
-
是sql标识符中的特殊字符。通常不能使用具有-
角色。如果将表名放在分隔符中,则可以。mysql的分隔符是反记号。然后像以前一样准备和执行。
但这是不必要的复杂,每次在查询中使用此表时,都需要记住使用反勾号。
避免在表名中使用特殊字符要简单得多。
sf6xfgos3#
根据@anthony的评论更新。测试sql命令;