我有很多记录,其中文本被存储在MySQL中的blob中。为了方便处理,我想改变数据库的格式为文本…有什么想法可以轻松地进行更改,从而不中断数据-我猜它将需要正确编码?
当前回答
SELECCT TO_BASE64(blobfield)
FROM the Table
为我工作。
CAST(blobfield AS CHAR(10000) CHARACTER SET utf8)和CAST(blobfield AS CHAR(10000) CHARACTER SET utf16)没有显示我想要得到的文本值。
其他回答
如果您使用的是MYSQL-WORKBENCH,那么您可以正常地选择blob列,然后右键单击列,然后在编辑器中单击打开值。请参考截图:
我也遇到过同样的问题,下面是我的解决方案:
在表中为每个blob列创建文本类型的新列 将所有blob转换为文本并保存在新列中 删除blob列 将新列重命名为已删除列的名称
修改mytable 添加字段field1_new文本不为空, ADD COLUMN field2_new TEXT NOT NULL 更新mytable set field1_new = CONVERT(field1 USING utf8), field2_new = CONVERT(field2 USING utf8); 修改mytable 删除列field1, 删除列field2; 修改mytable 修改字段field1_new field1文本, 修改字段field2_new field2文本;
我的MariaDB记录也有同样的问题。 这是(我的同事)用
select
uncompress(blobfield)
from table
SELECCT TO_BASE64(blobfield)
FROM the Table
为我工作。
CAST(blobfield AS CHAR(10000) CHARACTER SET utf8)和CAST(blobfield AS CHAR(10000) CHARACTER SET utf16)没有显示我想要得到的文本值。
这是不必要的。只需使用SELECT CONVERT(column USING utf8) FROM.....而不是只是SELECT column FROM…
推荐文章
- 在Mac上安装MySQL后,使用ALTER USER语句重置MySQL root密码
- 在postgresql中将查询结果按月和年分组
- my.cnf文件在macOS上的位置
- 索引中列的顺序有多重要?
- 如何从Mac OS X上卸载MySQL ?
- 在SQL Server中做嵌套case语句逻辑的最佳方法
- 如何创建默认值“现在”的时间戳列?
- 如何在Docker容器中用模式初始化MySQL数据库?
- MySQL:如何重置或修改MySQL root密码?
- 如何从对象URL获取文件或blob ?
- 准备好的语句如何防止SQL注入攻击?
- 如何改变一个列的数据类型在PostgreSQL表?
- 在PHP中插入MySQL时转义单引号
- 如何结合日期从一个字段与时间从另一个字段- MS SQL Server
- 我如何得到“id”后插入到MySQL数据库与Python?