2016-08-17 6 views
0

이전 Openerp 7 postgres 데이터베이스가 있는데, 이전 인보이스를 추출하려고합니다.SQL을 사용하여 Opererp에서 파일을 재구성하는 중입니다. 7 postgres db bytea (이진 데이터)

나는 그들이 DataBaseName.ir_attachment.dbdatas

나는이 마련하기 위해 관리했습니다

에 저장됩니다 읽었습니다 ...

copy 
(SELECT 
db_datas 
FROM 
ir_attachment 
WHERE 
name='Invoice_SAJ_2016_0964_.pdf') 
to '/tmp/Invoice.pdf' (FORMAT "binary"); 

그러나 불행하게도 그것이 작동하지 않습니다. 그것은 무언가를 추출하지만 pdf로 열 수는 없습니다.

나는 위의 파일을 다시 지그시 고 다른 파일 형식 인 .jpg를 시도했지만 다시 운이 없었습니다.

각 파일을 텍스트 편집기에서 열면 각 파일은 "PGCOPY"로 시작됩니다.

나는 할 수없는 것을 시도하고 있습니까?

직접적으로 크게 감사드립니다.

편집 ...

  • 때문에 나는의 시작 에이 코드의 일부를 추가 openerp 생각하기 시작하고 손상된 WKF 테이블
  • 에 openerp를 통해 DB를로드 할 수 없습니다, 추가해야합니다 바이너리! 어쩌면 나는 지금까지 내가 아는 한 Giulio Marcon suggests here
+0

'xxd -r -p> /tmp/Invoice.pdf을'프로그램 ... 사본'시도;'(PostgreSQL을> = 9.3) 또는 '복사 ...에'/ tmp를/송장 .txt '그리고 쉘에서'xxd -r -p /tmp/Invoice.txt>/tmp/Invoice.pdf'; – Abelisto

+0

슬프게도 :(이 아이디어는 효과가 없었습니다. 그러나 많은 제안에 감사드립니다. 추가 생각을 위해 위의 편집 된 질문을 참조하십시오. – Floggedhorse

답변

0

기발한 PDF로는 openerp로 인코딩됩니다.

문제는 Odoo 포럼 페이지에서 Jaime Vasquez가 제공 한 약간의 Python 코드를 사용하여 해결되었습니다.

Answer is here

0

같은 것을 할 필요는 SQL copy 명령은 출력 파일의 시작 부분과 끝 부분에 약간의 추가 문자를 추가합니다. 메모장 ++ 쇼와 출력 파일을보기 : 편집기와

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

열기 출력 파일 및 DC1을 포함하는 제 문자와 후행 두 문자 ÿÿ을 제거하려고 (어쩌면 당신은 이것에 대한 ++ 메모장을 사용하려면). 그런 다음 출력 파일을 저장하고 해당 응용 프로그램과 함께 엽니 다.

3 행에 DC1 뒤에 줄 넘김이 없습니다. 따라서 파일의 유용한 내용이 DC1 문자 바로 다음부터 시작되므로 처음 세 줄을 제거하면 출력 파일이 손상됩니다.

작동 도움이 희망해야 ...

+0

Cheers Klaus,하지만 비참하게 실패했습니다. (그러나, 질문에 대해 생각해 주셔서 감사합니다. – Floggedhorse