我在这里有一个愚蠢的问题。没什么大不了的,但是由于几乎每天都有,所以我正在寻找解决方法。
我正在处理一个大约250张桌子的项目。我经常需要查看这些列表,但是当我启动“ show table;”时,MySQL每行输出1列。
这是一个快速示例:
| contact |
| content_footer |
| content_footer_translation |
| content_homepage |
| content_homepage_image |
| content_homepage_translation |
我想要的是能够通过自己定义n来显示在n列中,或者甚至更好,应该以某种方式计算n以使行宽不会超过X个字符。
预期产量:
| contact | content_footer | content_footer_translation |
| content_homepage | content_homepage_image | content_homepage_translation |
我不确定是否真的可以在MySQL中完全做到这一点,但是如果您知道可以在Bash中做到这一点的不错的一线软件,也可以:)
最佳答案
尝试这个:
mysql databasename -NBe 'show tables;' | fmt
这会将名称组合成适当长度的行。您可以使用
-w
标志将行长调整为fmt
。但是,它不会形成新的列。一种构建列的解决方案如下:
set -- $(mysql databasename -NBe 'show tables') '' ''
while [[ $# -ge 3 ]]; do
printf "| %-20s | %-20s | %-20s |\n" "$1" "$2" "$3"
shift 3
done
为了便于阅读,它用五行编写,尽管您当然可以用分号将其写在单个逻辑行中。如果要调整列数,则必须在五个地方进行:空字符串数,循环测试,格式字符串,printf参数和shift参数。如果要调整列宽,则必须在格式字符串中重复进行此操作。不涉及自动计算。
关于bash - 在n列中输出数据库中的所有表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12621643/