我在这里有一个愚蠢的问题。没什么大不了的,但是由于几乎每天都有,所以我正在寻找解决方法。

我正在处理一个大约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/

10-13 06:01