【问题标题】:How to get Bytea Data in string from Postgres Database如何从 Postgres 数据库中获取字符串中的 Bytea 数据
【发布时间】:2013-11-12 07:53:21
【问题描述】:

有没有办法获取保存在数据库中的实际编码字符串DataType Bytea。因为当在C# 中获取记录时,它返回为System.Byte[],这是我不想要的。我想要保存在该列中的数据

E'\\\142\\\247\\\ 以此类推,直到数据结束。

感谢您的支持

当我通过

查询数据时
SELECT tpl::TEXT from Cards where ecode="xyz";

我收到以下错误

错误:无法将类型 bytea 转换为文本
Line1:从卡片中选择 tpl::TEXT

谢谢

像这样

正如您所见,Bytea 列显示 System.Byte[],它已被我的应用程序覆盖,因为 C# 中的代码将 DataTable 列中的数据存储为 System.Byte[],同时更新了我没有解码的数据,并且更新它。

我在查询数据时使用 Navicat 高级版,当我右键单击网格结果并复制为插入语句时,它会显示结果,它会显示不同行的两个结果

喜欢这个

INSERT INTO "public"."cards" ("ecode", "tpl") VALUES ('4210149888659', E'System.Byte[]');

INSERT INTO "public"."cards" ("ecode", "tpl") VALUES('3650257637661',E '\\247\\377\\001\\021\\340\\000\\230\\000\\002U\\000e\\000\\362\\000\\002-\\000\\253\\000p\\000\\002\\207\\000~\\000g\\000\\002\\215\\000{\\000\\317\\000\\002\\334\\000h\\000\\222\\000\\001|\\000\\004\\001U\\000\\002\\202\\000K\\000\\201\\000\\001\\000\\000\\204\\000\\241\\000\\001w\\000\\213\\000\\305\\000\\002\\021\\000V\\000\\237\\000\\002L\\001=\\001\\364\\000\\001X\\001"\\001\\313\\000\\002J\\000\\010\\001\\324\\000\\001\\370\\000\\037\\001J\\000\\002;\\0017\\000\\202\\000\\002\\300\\000\\317\\0007\\000\\002\\215\\000[\\000\\004\\011\\017\\007\\012\\005\\015\\014\\006\\016\\012\\007\\010\\005\\005\\007\\011\\010\\001\\004\\012\\017\\002\\003\\010\\012\\004\\010\\005\\003\\013\\014\\005\\017\\007\\003\\010\\003\\001\\011\\004\\012\\006\\020\\011\\005\\013\\015\\010\\002\\004\\005\\010\\007\\011\\012\\000\\002\\002\\020\\012\\003\\015\\000\\005\\002\\017\\003\\000\\006\\016\\020\\010\\017\\014\\000\\001\\012\\001\\010\\011\\002\\004\\007\\010\\000\\002\\006\\011\\007\\003\\020\\011\\003\\001\\005\\011\\000\\007\\002\\012\\002\\000\\020\\000\\016\\004\\017\\004\\003\\011\\017\\000\\003\\004\\000\\001\\007\\017\\002\\001\\017\\014\\006\\002\\016\\015\\011\\015\\006\\014\\016\\010\\020\\013\\000\\003\\006\\015\\002\\005\\020\\015\\016\\015\\004\\001\\003\\015\\010\\010\\006\\014\\002\\007\\020\\014\\011\\001\\000\\014\\010\\003\\016\\001\\015\\017\\020\\013\\006\\013\\016\\013\\011\\001\\014\\013\\004\\013\\002\\013\\001\\000'
);

【问题讨论】:

  • 你想把字节数组转成字符串吗?
  • 这与您之前的问题stackoverflow.com/q/19914761/398670 有何不同?
  • 我正在尝试探索是否可以轻松完成的可能性,那么我想我不需要任何 Bucardo 和其他东西,因为我已经编写了应用程序并且我只是遇到了问题bytea数据就是这样。我希望你能帮助我
  • 我希望您能作为专业人士协助我与 PostGres 合作
  • @SATSON 是的,我想将字节数组转换为字符串 .. 因为它的编码方式是通过 Griaule SDK for Thumb 展示。

标签: c# postgresql


【解决方案1】:

你不能只转换它,因为 PostgreSQL 不能保证它可以安全地转换。您可以做的最好的是将转义形式转换为字符串,这可能不是您想要的。请记住,由于 bytea 是二进制数据,PostgreSQL 无法确定输出的字符串是合法的。例如,您可以在 UTF-8 字符串中嵌入空值,如果您不小心,可能会导致缓冲区溢出。

这是应该在客户端完成的事情,您应该假设数据是二进制的,不一定是有效的字符串。如果你想存储字符串,存储文本字段,而不是 bytea。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-03
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多