-
Notifications
You must be signed in to change notification settings - Fork 0
MS_PostgreSQLNpgsql
- 戻る(ADO.NETデータプロバイダ)
- PostgreSQL + NpgSql
- Oracle11gXE + ODP.NET Managed Driver
- PostgreSQL 環境構築。
- NpgSql での接続テスト。
Windows x86-64 × バージョンの download をクリックし、
遷移先のページで [start the download now] をクリック。
-
PostgreSQL Database Download | EnterpriseDB
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads -
IT関連の技術情報サイト
- PostgreSQL 9.2 のダウンロードとインストール
http://www.cyber-funnel.com/postgres/index744.html
- PostgreSQL 9.2 のダウンロードとインストール
既定で CUI の psql を使用できるが、GUI を使用するなら pgAdmin をインストールする。
-
Download
https://www.pgadmin.org/download/ -
IT関連の技術情報サイト
- PostgreSQL 9.2 にクライアントから接続する pgAdmin のインストール設定
http://www.cyber-funnel.com/postgres/index890.html
- PostgreSQL 9.2 にクライアントから接続する pgAdmin のインストール設定
補足(最新化:もっと手軽な構築方法): 現在は、
インストーラを使わずに Docker で立てるのが最も手軽。docker run --name pg -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:16クライアントも、pgAdmin(現在は Web アプリ形式の pgAdmin 4)のほか、
A5:SQL Mk-2 や Azure Data Studio 後継の VS Code + PostgreSQL 拡張、
DBeaver などが使える。
- 「サービス」から「postgresql-x64-x.x」を開始するか、
- コマンドで開始する場合は、
net start postgresql-x64-x.xと開始する。
- IT関連の技術情報サイト
- PostgreSQL 9.2 にクライアントから接続する pgAdmin のインストール設定
http://www.cyber-funnel.com/postgres/index890.html
- PostgreSQL 9.2 にクライアントから接続する pgAdmin のインストール設定
-
既定で、postgres データベースが存在する。
-
こちらに pgAdmin を使用して以下の
CREATE文を流す。- OpenTouryo/TestTable.txt at develop · OpenTouryoProject/OpenTouryo
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/files/resource/Sql/pstgrs/TestTable.txt
- OpenTouryo/TestTable.txt at develop · OpenTouryoProject/OpenTouryo
-
作成したテーブルに対して SQL を発行してデータが参照できるかどうか確認する。

補足(
postgresデータベースを業務に使わない): 既定のpostgresDB は
管理用・接続確認用のものなので、
検証であってもCREATE DATABASEで専用の DB を作るほうがよい。
スキーマも、既定のpublicではなく業務ごとに切ると
権限管理がしやすい(PostgreSQL 15 以降は
publicスキーマへのCREATE権限が既定で剥奪されている)。
-
新規作成 → プロジェクト → コンソール アプリケーションを作成する。
-
NuGet から NpgSql を検索してインストールする。
-
以下のコードを記述してデバッグ実行するとレコード件数が返る。
(接続文字列のアカウントは、system とインストール時に入力したパスワードなど
環境に合わせて変更すること。)
using Npgsql;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
NpgsqlConnection cn = new NpgsqlConnection("HOST=localhost;DATABASE=postgres;USER ID=xxxx;PASSWORD=xxxx");
cn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("SELECT COUNT(*) FROM SHIPPERS", cn);
Console.WriteLine(cmd.ExecuteScalar().ToString());
Console.ReadKey();
}
}
}補足(最新化:現在の書き方): 接続は
usingで確実に破棄し、
I/O は非同期 API を使う(ADO.NET)。await using var cn = new NpgsqlConnection( "Host=localhost;Database=sample;Username=app;Password=xxxx"); await cn.OpenAsync(); await using var cmd = new NpgsqlCommand("SELECT COUNT(*) FROM shippers", cn); Console.WriteLine(await cmd.ExecuteScalarAsync());なお、Npgsql 7 以降は
NpgsqlDataSourceが推奨されており、
接続プールと型マッピングの構成を 1 か所にまとめられる。await using var ds = NpgsqlDataSource.Create(connectionString); await using var cmd = ds.CreateCommand("SELECT COUNT(*) FROM shippers");
補足(識別子の大文字小文字): PostgreSQL は
引用符で囲まない識別子を小文字に畳み込む。
このためSELECT COUNT(*) FROM SHIPPERSは
実際にはshippersを探しに行く。
CREATE TABLE "SHIPPERS"のように引用符付きで大文字で作成した場合は、
参照時も"SHIPPERS"と引用符が必要になる。SQL Server(照合順序に依存、既定は大文字小文字を区別しない)や
Oracle(引用符なしは大文字に畳み込む)とは挙動が逆なので、
クロスDB対応では要注意の差異である。
実務ではすべて小文字・引用符なしで統一するのが無難。
PostgreSQL は SQL Server と同様に、
DB を Drop & Create すればクリーンナップが可能。

補足:
DROP DATABASEは他の接続が残っていると失敗する。
pgAdmin の接続も含めて切断してから実行するか、
PostgreSQL 13 以降であればDROP DATABASE name WITH (FORCE);を使う。
-
PostgreSQL - Wikipedia
https://ja.wikipedia.org/wiki/PostgreSQL -
PostgreSQL: The world's most advanced open source database
https://www.postgresql.org/ -
NPO 法人 日本 PostgreSQL ユーザ会
https://www.postgresql.jp/- ダウンロード — NPO 法人 日本 PostgreSQL ユーザ会
https://www.postgresql.jp/download
- ダウンロード — NPO 法人 日本 PostgreSQL ユーザ会
-
ホーム | Let's Postgres
https://lets.postgresql.jp/- 目的別ガイド:インストール編
http://lets.postgresql.jp/map/install
- 目的別ガイド:インストール編
-
pgAdmin による管理 | PostgreSQL ではじめる DB 入門
http://db-study.com/archives/category/pgadmin%E3%81%AB%E3%82%88%E3%82%8B%E7%AE%A1%E7%90%86 -
組み込みデータ型対応表(SQLServer-PostgreSQL)
https://www.pgecons.org/wp-content/uploads/PGECons/2012/WG2/05_DataMigrationResearchAndPractice/05_Appendix_03_Built-inDataTypeCorrespondingList_SQLServer-PostgreSQL.pdf -
Npgsql - .NET Data Provider for PostgreSQL
https://www.npgsql.org/
補足(Npgsql と EF Core): EF Core から PostgreSQL を使う場合は
Npgsql.EntityFrameworkCore.PostgreSQLを導入する
(Entity Framework Core)。
ライセンスは PostgreSQL ライセンス(BSD 相当)で、
商用製品への組み込みに制約は無い
(ADO.NETデータプロバイダの MySQL の項と対照的)。
Tags: 移行, データアクセス, ADO.NET
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。