# PostgreSQL

# psql

# DB への接続

psql は下記のコマンドで起動する。デフォルトでは、オペレーティングシステムのユーザと同名のユーザと DB が使われる。例えば、windows のユーザ名が test の場合、psqlコマンドは下記と同じ意味になる。

psql -U test -d test

# コマンド

  • \d リレーション一覧
  • \dt テーブル一覧
  • \di インデックス一覧

# 参考

# pg-promise

# セットアップ

const pgPromise = require('pg-promise')();

const db = pgPromise({
  host,
  user,
  password,
  database,
});

# query

// query()は汎用クエリであり、なるべく避ける。次行以降の result-specific Method を使うこと。
db.query();
db.none();
db.one();
db.oneOrNone();
db.many();
db.manyOrNone();

# bulk insert

const users = [];

users.push({
  user_id: 1,
  description: 'some description',
  geom: `ST_GeomFromText('POINT(${lng} ${lat})')`,
});

// SEE: http://vitaly-t.github.io/pg-promise/helpers.ColumnSet.html
const column = [
  'user_id',
  'description',
  {
    name: 'geom',
    // サニタイズせずに、raw textとしてクエリ文に変換する。
    // 関数などを使うときに使用する。
    mod: '^',
  },
};

// 第三引数はテーブル名
const query = pgPromise.helpers.insert(users, column, 'users');

await db.none(query);

# 呼び出し

初期設定は下記のように行う。

const pgPromise = require('pg-promise')(initOptions);

初期化以降のタイミングで、他のファイルで pg-promise のヘルパーを使う際などは、下記のように呼び出して使う。

const pgPromise = require('pg-promise')();
pgPromise.as.format('something'); // ヘルパー
pgPromise.end(); // poolをすべて殺す