Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让mysql命令行客户端不打印select中的blob字段*_Mysql_Blob - Fatal编程技术网

如何让mysql命令行客户端不打印select中的blob字段*

如何让mysql命令行客户端不打印select中的blob字段*,mysql,blob,Mysql,Blob,探索一些具有blob字段的表。如何使用命令行客户端执行select*,并使其优于打印(或截断为标准字段宽度)blob字段,而不是在屏幕上滚动一堆二进制垃圾?这是mysql 5.1客户端的一个例子。只需执行select*操作,而不是单独列出所有非blob字段即可进行开发。这可以在MySQL中以本机方式执行,但它相当笨拙: SET @sql=CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM INFORMATION_SCHEMA

探索一些具有blob字段的表。如何使用命令行客户端执行
select*
,并使其优于打印(或截断为标准字段宽度)blob字段,而不是在屏幕上滚动一堆二进制垃圾?这是mysql 5.1客户端的一个例子。只需执行select*操作,而不是单独列出所有非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;
与MySQL过程相比,我通常更喜欢BASH别名/函数,因为它们更易于在系统之间传输:

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
()中设置默认的MySQL连接详细信息,以避免您必须在命令行上提供host/user/pass,这也将被BASH函数使用。

研究这个相关问题:不完全是您要查找的,但它允许排除特定列,甚至可以使用信息模式库自动排除BLOB字段。这些都不是真正的目标,但我想我可以编写一个存储过程,使用元数据动态生成查询并忽略或截断博客。似乎需要扩展语句语法,以便从表中选择*除了blob_列等。第一种查询构造很酷,但我也同样处理了“blobless()”解决方案提供的问题