を使用して、ファイルから PostgreSQL データベース テーブルにデータをインポートしていますCOPY FROM
。ファイル内の一部の文字列に 16 進文字 (ほとんどは \ x0dと \x0a) が含まれており、COPY
.
私の問題は、それらが通常のテキストとして扱われ、変更されずに文字列に残ることです。
16 進値を変換するにはどうすればよいですか?
これが私の状況の簡単な例です。
-- The table I am importing to
CREATE TABLE my_pg_table (
id serial NOT NULL,
value text
);
COPY my_pg_table(id, data)
FROM 'location/data.file'
WITH CSV
DELIMITER ' ' -- this is actually a tab
QUOTE ''''
ENCODING 'UTF-8'
サンプルファイル:
1 'some data'
2 'some more data \x0d'
3 'even more data \x0d\x0a'
注: ファイルはタブ区切りです。
今、やっている:
SELECT * FROM my_pg_table
hexを含む結果が得られます。
コンテキストの追加情報:
私の仕事は、sybase テーブル (数百) からデータをエクスポートし、Postgres にインポートすることです。UNLOAD
次のようにデータをファイルにエクスポートするために使用しています。
UNLOAD
TABLE my_sybase_table
TO 'location/data.file'
DELIMITED BY ' ' -- this is actually a tab
BYTE ORDER MARK OFF
ENCODING 'UTF-8'