1. ホーム
  2. データベース
  3. ポストグレスキュー

エクセルテーブルのデータをpostgresqlのデータベースにインポートする方法

2022-01-10 11:22:13

実務では、統計データの作業によく出くわします。ある次元の統計データは、仕事の関係で、異なる部門がレビューするためにレポートの添付ファイルとしてエクセルにエクスポートする必要があります。後で比較作業を容易にするために、リーダーは、具体的にこれらのデータを記録するためのデータベース内のテーブルを作成するようになります。この時点で、我々はDBAは、データベースにこれらのExcelのテーブルをインポートする必要がある、コピーして、 \copyコマンドは、私たちにソリューションを提供し、この記事では、主にコピーコマンドの使用を通じて、どのようにデータベースにExcelのテーブルをインポートするために紹介することです。copyコマンドとecopyコマンドの違いについては、ブロガーの皆様に別の記事を参照してください。 どのようにpostgresqlデータベースのテーブルからExcel形式にデータをエクスポートする ¦コピーコマンドの違いは、別の記事「PostgresqlのデータベースのテーブルからデータをExcel形式にエクスポートする方法」で見ることができます。

1、コピーの基本構文

COPY { table name [ ( column name [, ...] ] ) ] 
from { 'filename' | PROGRAM 'command' | STDIN } 
 [ [ WITH ] ( options [, ...] ) ) ]
 
Options can be one of the following
 FORMAT format_name 
 FREEZE [ Boolean] 
 DELIMITER 'separator character' 
 NULL 'empty string' 
 HEADER [ Boolean ] 
 QUOTE 'quote character' 
 ESCAPE 'escape character' 
 FORCE_QUOTE { ( column name [, ...] ) ) | * } 
 FORCE_NOT_NULL ( column name [, ...] ) ) 
 ENCODING 'encoding_name(encoding name)'

2. パラメータの意味の紹介

FORMAT:コピー先のファイルの種類、例:CSV、TEXT。  
FREEZE : データをフリーズさせ、VACUUM FREEZEを実行します。 
DELIMITER : デリミタは、ファイルをエクスポートする際にシングルクォートが必要であることを指定します。デフォルトは、TEXTファイルではタブ、CSVファイルではカンマです。バイナリファイル形式には対応していません。 
HEADER: ファイルにコピーする際にテーブルのフィールド名を持ってくることを意味します。 
NULL:NULL 値を指定します、デフォルトは \N です。 
QUOTE: CSVモードでの引用文字を宣言します。デフォルトはダブルクォートです。
ESACPE:エスケープ文字を指定します。デフォルトはQUOTE値(通常はダブルクォート)です。
ENCODING ファイルのエンコーディングを指定します。指定しない場合、クライアントの文字セットがデフォルトで使用されます。

3. 使用例

エクセル表を編集し、テストデータを入力し、csv 形式で保存します。

エクセルテーブルをデータベースサーバーにアップロードし、テーブルのフィールドを基に対応するテーブルを作成します。

postgres=# create table movie_star(user_id int,user_name varchar(100),age int,gender text,address varchar(100),mark text);
CREATE TABLE
postgres=# 
postgres=# 
postgres=# postgres=# 
postgres=# select * from movie_star ;
 user_id | user_name | age | gender | address | remark 
---------+-----------+-----+--------+---------+--------
(0 rows)

コピーコマンドを使用して、Excelデータをインポートします。

postgres=# copy movie_star from '/pg/movie_star.csv' with csv header;
COPY 9
postgres=# 
postgres=# select * from movie_star ;
 user_id | user_name | age | gender | address | remark   
---------+---------------+-----+--------+-------------------+------------------------------------------
 1 | Jackie Chan | 45 | male | HK,CHINA,ASIA | police story project A rush hour
 2 | Gong Li | 38 | female | "Singapore",ASIA | Farewell My Concubine Lifetimes Living
 3 | Brigitte Lin | 46 | female | HK,CHINA,ASIA | 
 4 | Maggie Cheung | 39 | female | HK,CHINA,ASIA | 
 5 | Jet Li | 41 | male | "Singapore",ASIA | Fist of LegendOnce Upon a Time in China
 6 | Jacky Cheung | 35 | male | HK,CHINA,ASIA | 
 7 | Chow Yun Fat | 48 | male | HK,CHINA,ASIA | 
 8 | Donnie Yen | 36 | male | HK,CHINA,ASIA | 
 9 | Stephen Chow | 40 | male | HK,CHINA,ASIA | 


サーバーにアップロードされたExcelスプレッドシートのデータを表示します。

postgres=# \! cat /pg/movie_star.csv
user_id,user_name,age,gender,address,remark
1,Jackie Chan,45,male,"HK,CHINA,ASIA ",police story project A rush hour
2,Gong Li,38,female," ""Singapore" ",ASIA", Farewell My Concubine Lifetimes Living
3,Brigitte Lin,46,female," HK,CHINA,ASIA",
4,Maggie Cheung,39,female,"HK,CHINA,ASIA ",
5,Jet Li,41,male,"""Singapore"",ASIA", Fist of LegendOnce Upon a Time in China
6,Jacky Cheung ,35,male,"HK,CHINA,ASIA",
7, Chow Yun Fat,48,male,"HK,CHINA,ASIA",
8, Donnie Yen,36,male,"HK,CHINA,ASIA",
9, Stephen Chow,40,male,"HK,CHINA,ASIA",

エクセルの表を見るとわかるように、csv形式(UTF-8、カンマ区切り)で保存した後、システムは自動的に表のデータをフォーマットし、データのインポートエラーを避けるために、ダブルクォート、カンマなど、いくつかのフィールドにエスケープを追加しています。

この記事はpostgresqlデータベースにExcelのテーブルデータをインポートする方法について紹介されています、より関連するpostgresqlデータベースへのExcelのテーブルデータの内容はBinaryDevelopの以前の記事を検索してくださいまたは、次の関連記事を参照してください、あなたが将来的にBinaryDevelopをよりサポートすることを願っています