gpt4 book ai didi

mysql - 如何让 mysql 命令行客户端不在选择中打印 blob 字段 *

转载 作者:IT王子 更新时间:2023-10-29 00:28:36 27 4
gpt4 key购买 nike

探索一些具有 blob 字段的表。如何使用命令行客户端执行 select * 并让它抑制 blob 字段的打印(或截断为标准字段宽度)而不是在屏幕上滚动一堆二进制垃圾?这是 mysql 5.1 客户端。只想做一个选择 * 而不是单独列出所有非 blob 字段,用于开发。

最佳答案

这可以在 MySQL 中本地执行,但它非常笨重:

SET @sql=CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='test' AND TABLE_NAME='test'
AND DATA_TYPE!='blob'), ' FROM test.test');
PREPARE preparedsql FROM @sql;
EXECUTE preparedsql;
DEALLOCATE PREPARE preparedsql;

我通常更喜欢 BASH 别名/函数而不是 MySQL 过程,因为它们在系统之间更容易传输:

function blobless()
{
cols=''
_ifs=$IFS
IFS=$(echo -en "\n\b")
for col in $(mysql --skip-column-names -e "SELECT COLUMN_NAME FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='$1' AND TABLE_NAME='$2'
AND DATA_TYPE NOT LIKE '%blob'"); do
cols="$cols,$col"
done
IFS=$_ifs
mysql -e "SELECT $(echo $cols | cut -c2-) FROM $1.$2 $3"
}

像这样调用:

[andy ~]# blobless test test "where id>0"
+----+--------+
| id | t |
+----+--------+
| 1 | 123 |
| 2 | 124213 |
+----+--------+

如果您在 MySQL 客户端控制台中,请使用 Ctrl-Z 暂停程序并进入 shell。然后使用 blobless db table 检查 blobless 数据。 fg 将暂停的作业(即 MySQL 客户端)恢复到前台。

您可以在 ~/.my.cnf ( howto ) 中设置默认的 MySQL 连接详细信息,以避免您必须在命令行上提供主机/用户/密码 - 这也将被使用通过 BASH 函数。

关于mysql - 如何让 mysql 命令行客户端不在选择中打印 blob 字段 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3826030/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com