尝试使用SQL从Opererp 7 postgres db bytea(二进制数据)重建文件

时间:2016-08-17 21:38:40

标签: sql postgresql binary-data openerp-7

我有一个旧的Openerp 7 postgres数据库,我试图提取旧发票。

我读过他们存储在DataBaseName.ir_attachment.dbdatas

我设法想出来......

function loadImg(){
    $.ajax({
        type: "GET",
        url: "load.php",
        success: function(data){
            console.log(data); // To check something there
            $("#imgsDiv").html(data);
        }
    });
}

但不幸的是它不起作用。它提取了一些内容,但它不能作为pdf打开。

我重新进行了上述操作并尝试了其他文件类型.jpg,但再次没有运气。

如果我在文本编辑器中打开每个文件,则每个文件都以" PGCOPY"开头。 - 可能是线索?

我在尝试一些无法做到的事情吗?

任何直接非常感谢。

...编辑

  • 必须添加,因wkf损坏而无法通过openerp加载数据库 表
  • 我开始认为openerp会在开头添加一些代码 二进制!也许我必须做Giulio Marcon suggests here
  • 之类的事情

2 个答案:

答案 0 :(得分:0)

据我所知,SQL copy命令在输出文件的开头和结尾添加了一些额外的字符。使用NOTEPAD ++查看输出文件显示:

PGCOPY
ÿ
NULNULNULNULNULNULNULNULNULNULSOHNULNULeDC1{useable file content starts here...
...
...
useable file content ends here}
ÿÿ

使用编辑器打开输出文件并尝试删除包括DC1和尾随两个字符ÿÿ的第一个字符(可能您想使用Notepad ++)。然后保存输出文件并使用适当的应用程序打开它。

请注意,第3行DC1后没有换行 - 因此只删除前三行会损坏您的输出文件,因为文件中的可用内容会在DC1之后直接启动字符。

应该工作,希望有所帮助...

答案 1 :(得分:0)

据说pdf由openerp编码。

使用Jaime Vasquez在odoo论坛页面上提供的一些python代码解决了这个问题。

Answer is here