分享_第二天_SQL_DB2数据库BLOB类型字段查看问题

DB2数据库BLOB类型字段查看问题

最近在项目中,碰到BLOB字段的查看问题,在网上查了两天,终于让我找到了貌似可以解决问题的方法。(用貌似是因为还没有在生产环境试验过,只在测试环境做了尝试)

问题描述
张表,其中一列定义为BLOB类型,用于存储大文本数据,比如电子文本合同等。在开发机上,自然可以利用DBVisualizer工具,查看到中文内容;

是在生产数据库服务器上,是无法利用工具的,只能通过CRT窗口,用sql查询,而sql查出来的数据是以x’123456789ABCDEF’这种形式展现的16进制数据;

先想到的就是通过java代码,将16进制字符串转化成中文,代码如下:

public static String hexStr2Str(String hexStr) {
    String str = "0123456789ABCDEF";
    char[] hexs = hexStr.toCharArray();
    byte[] bytes = new byte[hexStr.length() / 2];
    int n;
    for (int i = 0; i < bytes.length; i++) {
        n = str.indexOf(hexs[2 * i]) * 16;
        n += str.indexOf(hexs[2 * i + 1]);
        bytes[i] = (byte) (n & 0xff);
    }
    return new String(bytes);
}

是后来发现,当文本很长的时候,翻译出得内容只有上半部分,下半部分没有!又是一番检查搜索……最后发现BLOB类型的数据,在Linux环境用sql查询的时候,会出现被截断的问题,在我的测试环境上,查出的16进制字符串的最大长度只能到16384字节,后面的文字便没有了。

搜索后,并没有找到能解决最大16384字节的方法。却发现了另一种方法:

第一步:进入DB2命令行模式,连接到需要导入信息的表所有在的数据库。

db2 connect to db_name user username using password

第二步:输入导出命令。

db2 export to D:\blob_data\blob_table.txt of del lobs to D:\blob_data lobfile lob_doc modified by lobsinfile messages msg.out select * from blob_table

说明:上面的路径部分可根据实际情况进行修改,我的路径是/tmp/rush/bt.txt。

D:\blob_data\blob_table.txt 是导出文件的路径,blob_data是D盘下的一个文件夹,blob_table.txt是导出的数据文件。

select * from blob_table 用来指定需要导出的数据,后面可以加上查询条件。

命令执行后,会在/tmp/rush/目录下,产生两个文件:bt.txt 和 lob_doc.001.log 文件,lob_doc.001.log文件中存放的就是BLOB列的数据了,使用more命令可以查看到全部中文内容。

你可能感兴趣的:(BLOB,DB2)