想用mysql命令行插入blob数据,但是总在00处截断,
比如0xCCDD00CCDD插入到数据库中就只有0xCCDD了。
我应该如何插入该数据呢?
另外,如上在终端select出来的blob数据默认就转成了字符"梯",
我想看到二进制内容又该如何做呢?
---------------------------------------------------------------
如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:
NUL
ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。
\
ASCII 92,反斜线。用'\\'表示。
'
ASCII 39,单引号。用“\'”表示。
"
ASCII 34,双引号。用“\"”表示。
详细内容可以查看
MySQL的转义字符“\”
http://www.csdn.net/develop/read_article.asp?id=15635
---------------------------------------------------------------
如果你想插入一个十六进制数0xCCDD00CCDD
update tbl_name set blob_column=0xCCDD00CCDD;
是完全可以的,
如果想以
update tbl_name set blob_column='CCDD\0CCDD';
方式,
必须使用
update sql set sql = '梯\0梯'
因为0xCCDD 是汉字“梯”
而\0为转义 00
---------------------------------------------------------------
mysql> UPDATE tbl_name
SET blob_column=LOAD_FILE("/tmp/picture")
WHERE id=1;
运行 LOAD_FILE 的要求:
1:
文件必须在服务器上,
2:
引用时必须用完全路径
3:
你必须有 FILE 权限
4:
读取的文件大小必须小于 max_allowed_packet
你可以使用 MySQL-Front 来查看所插入的数据
比如0xCCDD00CCDD插入到数据库中就只有0xCCDD了。
我应该如何插入该数据呢?
另外,如上在终端select出来的blob数据默认就转成了字符"梯",
我想看到二进制内容又该如何做呢?
---------------------------------------------------------------
如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:
NUL
ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。
\
ASCII 92,反斜线。用'\\'表示。
'
ASCII 39,单引号。用“\'”表示。
"
ASCII 34,双引号。用“\"”表示。
详细内容可以查看
MySQL的转义字符“\”
http://www.csdn.net/develop/read_article.asp?id=15635
---------------------------------------------------------------
如果你想插入一个十六进制数0xCCDD00CCDD
update tbl_name set blob_column=0xCCDD00CCDD;
是完全可以的,
如果想以
update tbl_name set blob_column='CCDD\0CCDD';
方式,
必须使用
update sql set sql = '梯\0梯'
因为0xCCDD 是汉字“梯”
而\0为转义 00
---------------------------------------------------------------
mysql> UPDATE tbl_name
SET blob_column=LOAD_FILE("/tmp/picture")
WHERE id=1;
运行 LOAD_FILE 的要求:
1:
文件必须在服务器上,
2:
引用时必须用完全路径
3:
你必须有 FILE 权限
4:
读取的文件大小必须小于 max_allowed_packet
你可以使用 MySQL-Front 来查看所插入的数据
是的,
如果用第一种办法必须将NUL
ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。
\
ASCII 92,反斜线。用'\\'表示。
'
ASCII 39,单引号。用“\'”表示。
"
ASCII 34,双引号。用“\"”表示。 字符替换了