postgresqlでExcelまたはcsvからクエリを実行するために使用する、SQLサーバーのopenqueryまたはopenrowsetに相当するクエリはありますか?
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 は/N
null フィールドを表すために ' ' を追加します。これは問題ありませんが、そのデータをたとえば 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