Inserting text string with hex into PostgreSQL as a bytea

前端 未结 5 2014
抹茶落季
抹茶落季 2020-12-13 05:50

I have a text file with several strings of hex in it:

013d7d16d7ad4fefb61bd95b765c8ceb
007687fc64b746569616414b78c81ef1

I would like to sto

5条回答
  •  难免孤独
    2020-12-13 06:27

    You can convert a hex string to bytea using the decode function (where "encoding" means encoding a binary value to some textual value). For example:

    select decode('DEADBEEF', 'hex');
          decode      
    ------------------
     \336\255\276\357
    

    which is more understandable with 9.0's default output:

       decode   
    ------------
     \xdeadbeef
    

    The reason you can't just say E'\xDE\xAD\xBE\xEF' is that this is intended to make a text value, not a bytea, so Postgresql will try to convert it from the client encoding to the database encoding. You could write the bytea escape format like that, but you need to double the backslashes: E'\\336\\255\\276\\357'::bytea. I think you can see why the bytea format is being changed.... IMHO the decode() function is a reasonable way of writing inputs, even though there is some overhead involved.

提交回复
热议问题