
- EDB
- PostgreSQL
PostgreSQLの拡張機能「system_stats」のご紹介
EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。
|
当記事はエンタープライズDB社のブログ記事の翻訳の紹介および弊社考察を加えています。
この記事では、CSVファイルからPostgreSQLにデータをインポートする方法とPostgreSQLからCSVファイルにデータをエクスポートする方法について説明します。また、CSVファイル形式の紹介とその使用例も含みます。
1. CSVファイルの作成
2. テーブルの作成
3. psqlからCSVファイルをインポート
4. シェルプロンプトからCSVファイルをインポート
5. CSVファイルへデータをエクスポート
CSVファイルは、各データがカンマ(,)で区切られた一般的なデータフォーマットです。多くのアプリケーションがCSV形式でデータを出力しており、監視データを収集するために使用される単純なシェルスクリプトから、複雑なWebフォームのデータ送信/受信まで幅広い場面で使われています。また、データベースサーバから別のサーバーにデータを移動したり、単に新しいハードウェアにデータを移動する場合等、「データダンプ」の機能としてCSVファイルを使用することもできます。
ここでは、CSVファイルをPostgreSQLデータベースにインポートするために必要な手順を説明します。データベースにログインしている状態でpsqlプロンプトからCSVファイルを呼び出す方法と、シェルプロンプトから呼び出す方法を説明します。
まずはCSVファイルを作成します。既存のCSVファイルがあればそちらを使っていただいても構いません。既存のファイルが無い場合は次のような基本的な構成のCSVファイルを作ってください。
都道府県,市町村,郵便番号 東京都,千代田区, 1020072 大阪府,大阪市,5350005 京都府,京都市,6168171 福岡県,福岡市,8140004 北海道,札幌市,0040021
このデータをコピーして、任意のテキストエディタを使ってテキストファイルに保存し、「japan.csv」という名前で保存してみましょう。
CSVのデータを、データベース内の適切な場所に格納するため、まずはデータベースにテーブルを作成する必要があります。
postgres=# CREATE TABLE japan (都道府県 varchar, 市町村 varchar, 郵便番号 numeric(7)); CREATE TABLE postgres=#
作成したCSVファイルをデータベースのテーブルにインポートしてみましょう。
COPYコマンドを使用してCSVファイルからテーブル "japan" に全てのレコードをコピーすることにします。 COPYコマンドの例は次の通りです。
\COPY <table name> FROM 'location + file_name' DELIMITER ',' CSV HEADER;
コマンドを理解するために各項目について細かく見ていきます。
項目 | 詳細 |
---|---|
/COPY | これはCSVファイルからレコードをコピーするコマンドです |
<table name> | データをインポートするテーブル名を指定します |
FROM | ファイルからインポートすることを指定します。(ファイルにエクスポートする場合は “TO” を使います。) |
‘location + file_name’ | ファイルへの絶対パス(ファイルへの読み取り権限があることをご確認ください) |
DELIMITER ',' | データの区切り文字(デリミタ)を指定します。この例ではカンマです。 |
CSV | インポート元のファイル形式を指定します。 |
HEADER | CSVファイルにヘッダー行があることを示し、インポート時に最初の1行を無視します。(エクスポート時には、ヘッダーファイルをエクスポートするか除外するかを指定できます)。 |
コマンドに必要な情報を設定すると次のようになります(データベースにログインし、テーブルを作成したデータベースに接続していることをご確認下さい)。
postgres=# \copy japan from '/Users/EDB1/Downloads/japan.csv' delimiter ',' csv header; COPY 4
次はシェルプロンプトからCOPYコマンドでインポートする方法をご紹介します。
./psql -d postgres -U postgres -c "\copy japan from /Users/EDB1/Downloads/japan.csv delimiter ',' csv header;" Password for user postgres: COPY 4
このコマンドはpsqlプロンプトからインポートした時と同じ構文ですが、シェルとして実行できるため、データをインポートしようとした時に、インポート処理をスクリプト化したり、スケジュールされたジョブを作成したりする時に役立ちます。
ここまでの内容でCOPYコマンドとその実行パラメータについてはご理解いただけたと思います。インポートと同様に、COPYコマンドを使うことでテーブルの内容をファイルにエクスポートすることもできます。”FROM” を “TO” に置き換えることで、単純にインポートの逆の処理を行うことができます。
\COPY <table name> TO 'location + file_name' DELIMITER ',' CSV HEADER;
同じテーブルを例に、データをCSVファイルにエクスポートしてみます。
psqlプロンプトから実行する場合、次のコマンドでエクスポートができます。
\copy japan TO /Users/EDB1/Downloads/amit.csv DELIMITER ',' CSV HEADER;" COPY 4
シェルプロンプトから実行する場合、コマンドは次のようになります。
./psql -d postgres -U postgres -c "\copy japan to /Users/EDB1/Downloads/amit.csv delimiter ',' csv header;" Password for user postgres: COPY 4
(以上、EDB社ブログ記事より翻訳)
CSVファイルをPostgreSQLで扱う(インポート、エクスポート)方法をご紹介いたしました。アプリケーション間の互換性が高いCSVファイルを扱う機会は多いと思いますので、CSVファイルをPostgreSQLに取り込む機会に本記事が参考になりましたら幸いです。
なお、EDBにはOracleデータベースと互換性のあるインタフェースを提供する高性能バルク・ローダーであるEDB*Loaderがあります。EDB*Loaderは以下のブログ記事で紹介していますので、興味をお持ちの方は併せて参照ください。
▼SQL*Loader互換のEDB*Loaderを使ってみよう
https://www.ashisuto.co.jp/db_blog/article/201707_edb_loader.html
\ PostgreSQLとEDBの違いについて知りたい方はこちらへ! /
\ EDBとは?について知りたい方はこちらへ! /
![]() |
---|
2017年に中途入社。Oracle Database、EDB Postgres/PostgreSQL のサポート経験を経て、2020年からバックサポートを担当。DBとアプリケーションを繋ぐミドルウェア製品のスペシャリスト。トレンドな技術は積極的に触れるほど好奇心旺盛。最近はプロアクティブなサポートを目指して粉骨砕身。趣味はボードゲーム。...show more
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。
PostgreSQLのオプティマイザがインデックスを適切に使用できない理由は様々ですが、本記事ではJDBC⇔PostgreSQL間でデータ型の不一致がインデックスの使用にどういった悪影響を及ぼすかを見ていきます
EDB Postgres Workload Reportsは、Postgresデータベースのパフォーマンス診断とトラブルシューティングを強化する新しいツールです。OracleのAWRに似た詳細なレポートを提供し、データベースの問題を迅速に特定・解決できるようサポートします。本記事では概要と利用手順をご紹介します。