相关疑难解决方法(0)

将带有十六进制的文本字符串作为bytea插入到PostgreSQL中

我有一个文本文件,其中包含几个十六进制字符串:

013d7d16d7ad4fefb61bd95b765c8ceb
007687fc64b746569616414b78c81ef1
Run Code Online (Sandbox Code Playgroud)

我想将它们作为bytea存储在数据库中,而不是varchar.也就是说,我希望数据库将01存储为单字节00000001,而不是字符'0'和'1'.

我可以通过sed轻松运行这个文件,以任何方式格式化/转义它.

这是我尝试过的:

create table mytable (testcol BYTEA);
Run Code Online (Sandbox Code Playgroud)

这有效:

insert into mytable (testcol) values (E'\x7f\x7f');
Run Code Online (Sandbox Code Playgroud)

但是,只要我的字节超过\ x7f,我就会收到此错误:

insert into mytable (testcol) values (E'\x7f\x80');
ERROR:  invalid byte sequence for encoding "UTF8": 0x80
Run Code Online (Sandbox Code Playgroud)

任何想法,还是我接近错误?

sql postgresql

45
推荐指数
4
解决办法
6万
查看次数

标签 统计

postgresql ×1

sql ×1