几个小时以来,我一直在为这个问题苦苦挣扎,这真的让我很头疼。我也在堆栈溢出上问过它,但还没有得到任何答案,所以我在这里问。抱歉,这不是一个好问题。
我正在 Linux shell 上执行命令。
mysql -uroot -proot -Bse "select Concat('SHOW CREATE TABLE ',TABLE_SCHEMA ,'.',TABLE_NAME,'\\G') from information_schema.tables where TABLE_SCHEMA Not IN('mysql','information_schema','performance_schema');"
我想要输出为
SHOW CREATE TABLE sakila.category\G
SHOW CREATE TABLE sakila.city\G
SHOW CREATE TABLE sakila.country\G
SHOW CREATE TABLE sakila.customer\G
但我越来越像
SHOW CREATE TABLE sakila.categoryG
SHOW CREATE TABLE sakila.cityG
SHOW CREATE TABLE sakila.countryG
SHOW CREATE TABLE sakila.customerG
为什么会这样..?
这对我来说一直是一个真正的痛苦。
\\G
为\G
\G
为G
不幸的是,这是总是发生的顺序。
我使用sed命令来解决这个问题,如下所示:
请注意,我替换
\\G
为G
(空白后跟G
)我有 sed 命令翻译
G$
(这意味着行尾的空白大写 G)并将其转换为\G
. 请注意,sed 正在对 OS 输出和 mysql 输出进行此转换。您不再需要处理该
\G
问题。只需计划一个空白的大写字母 G 由 sed 转换为\G
.