私はこれを使用しています:
COPY( テーブルからフィールド 1、フィールド 2、フィールド 3 を選択) TO 'C://Program Files/PostgreSql//8.4//data//output.dat' WITH BINARY
一部のフィールドをファイルにエクスポートするには、そのうちの 1 つが ByteA フィールドです。ここで、カスタムメイドのプログラムでファイルを読み取る必要があります。
このファイルを解析するにはどうすればよいですか?
私はこれを使用しています:
COPY( テーブルからフィールド 1、フィールド 2、フィールド 3 を選択) TO 'C://Program Files/PostgreSql//8.4//data//output.dat' WITH BINARY
一部のフィールドをファイルにエクスポートするには、そのうちの 1 つが ByteA フィールドです。ここで、カスタムメイドのプログラムでファイルを読み取る必要があります。
このファイルを解析するにはどうすればよいですか?
によって生成されるファイルの一般的な形式はドキュメントCOPY...BINARY
で説明されており、重要です。
bytea
コンテンツはエンコードされていないため、最も扱いが簡単です。
他の各データ型には、ドキュメントではなくソース コードで説明されている独自のエンコード規則があります。ドキュメントから:
実際のタプル データの適切なバイナリ形式を決定するには、PostgreSQL ソース、特に各列のデータ型の *send および *recv 関数を参照する必要があります (通常、これらの関数は src/backend/utils/adt/ ディレクトリにあります)ソース配布)。
バイナリ形式よりもテキスト形式を使用する方が簡単かもしれません (そのため、 を削除してWITH BINARY
ください)。テキスト形式の方がドキュメントが充実しており、相互運用性が向上するように設計されています。バイナリ形式は、postgres インストール間での移動を目的としており、バージョンの非互換性があります。
テキスト形式は、bytea フィールドをテキストであるかのように書き込み、印刷できない文字を8 進表現でエンコードします (およびなどの C スタイルパターン\nnn
でエンコードするいくつかの特殊なケースを除く)。これらはCOPYにリストされています。ドキュメンテーション。\x
\n
\t
これに関する唯一の注意点は、ファイルを保存するときと読み取るときの文字エンコーディングが同じであることを絶対に確認する必要があることです。印刷可能な文字が同じ数字にマップされていることを確認します。物事をよりシンプルに保つため、私は SQL_ASCII に固執します。