2016-08-17 13 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」で始まります。

私はできないことを試していますか?

いずれか直接的に大変感謝しています。

編集...

  • テーブル
  • を、追加する必要があります原因壊れWKFにopenerpを通じてデシベルをロードすることはできません、私は最初の にあったコードの一部を追加openerp考え始めていますバイナリ!たぶん私は私の知る限りでは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コマンドは、出力ファイルの最初と最後にいくつかの余分な文字を追加します。 NOTEPAD ++ショーで、出力ファイルの表示:

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

オープンをエディタで出力ファイルとDC1と末尾の2つの文字ÿÿ(多分あなたは、このために、メモ帳++を使用する場合)を含む最初の文字を削除してみてください。次に、出力ファイルを保存し、適切なアプリケーションで開きます。

3行目にDC1の後に改行がないことに注意してください。ファイル内の使用可能なコンテンツがDC1文字の直後から始まるため、最初の3行を削除するだけで出力ファイルが破損します。

、仕事に役立っていることを期待すべき...

+0

乾杯していますが、悲惨に失敗しました。 – Floggedhorse

関連する問題