1

postgresqlでExcelまたはcsvからクエリを実行するために使用する、SQLサーバーのopenqueryまたはopenrowsetに相当するクエリはありますか?

4

1 に答える 1

1

PostgreSQL のCOPYを使用できます

ドキュメントに従って:

COPY は、PostgreSQL テーブルと標準ファイル システム ファイルの間でデータを移動します。COPY TO はテーブルの内容をファイルにコピーしますが、COPY FROM はデータをファイルからテーブルにコピーします (既にテーブルにあるものにデータを追加します)。COPY TO は、SELECT クエリの結果をコピーすることもできます

COPYは次のように機能します。

CSV からのテーブルのインポート

適切な列を含むテーブルが既に配置されていると仮定すると、コマンドは次のようになります。

COPY tblemployee FROM '~/empsource.csv'  DELIMITERS  ','  CSV;

テーブルからの CSV のエクスポート。

COPY (select * from tblemployee) TO '~/exp_tblemployee.csv' DELIMITERS ',' CSV;

一般に、データが Unicode であるか、厳密なエンコーディングが必要な場合は、上記のコマンドを実行する前に必ず client_encoding を設定してください。

PostgreSQL で CLIENT_ENCODING パラメータを設定するには

set client_encoding to 'UTF8'

また

set client_encoding to 'latin1'

もう 1 つ注意すべきことは null です。エクスポート中に一部のフィールドが null の場合、PostgreSQL は/Nnull フィールドを表すために ' ' を追加します。これは問題ありませんが、そのデータをたとえば SQL サーバーにインポートしようとすると問題が発生する可能性があります。

簡単な修正は、エクスポートされた CSV の null プレースホルダーとして何を優先するかを指定して、エクスポート コマンドを変更することです。

COPY (select * from tblemployee ) TO '~/exp_tblemployee.csv' DELIMITERS ',' NULL as E'';

もう 1 つの一般的な要件は、ヘッダーを使用したインポートまたはエクスポートです。

csv ファイルの最初の行にある列のヘッダーを使用して、CSV をテーブルにインポートします。

COPY tblemployee FROM '~/empsource.csv'  DELIMITERS  ','  CSV HEADER

ヘッダーが最初の行にあるテーブルを CSV にエクスポートします。

COPY (select * from tblemployee) TO '~/exp_tblemployee.csv' DELIMITERS ',' CSV HEADER
于 2016-01-25T11:14:35.470 に答える