UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

PostgreSQL

【PostgreSQL】データのバックアップとリストア

Cloud SQLのDBからデータのバックアップをスキーマごとローカルに持ってきたい 手順が以下にあったのでメモ cloud.google.com まず、Cloud SQLからデータをバックアップする $ pg_dump --dbname="my_context" --schema='"my_context"' --file="/uggds/my-pro…

【PostgreSQL】COALESCEの使い方

SQLの関数でCOALESCEの使い方がわからなかったので調べた COALESCEは「合体」という意味らしい COALESCE関数は、条件式の一つ www.postgresql.jp 使い方の説明 COALESCE関数は、NULLでない自身の最初の引数を返します。 全ての引数がNULLの場合にのみNULLが…

【PostgreSQL】PostGISによる空間検索のパフォーマンス改善

ある地点から100m圏内のデータで、かつ、1番近いデータを取得するという検索をしたい 前の記事で有効そうなSQLを考えたが、1リクエストで25秒もかかってしまったのでこれを改善したい uga-box.hatenablog.com 結果はもうわかっていて、以下のように考え方…

【PostgreSQL】距離が近い順にソートする

GISデータに対してある地点から100m圏内のデータで、かつ、1番近いデータを取得するということがやりたい ある地点からの距離検索はGeometoryとGeographyのうち、Geographyを使うのがよさそうなのはわかった uga-box.hatenablog.com そして、100m圏内という…

【PostgreSQL】地球は丸かった

以前PostgreSQLのPostGISを使った検索を行った uga-box.hatenablog.com 最近このGISデータに対してある地点から近いデータを取得するということをやる必要がでてきた このとき、2点間の距離を考える場合にgeometryとgeographyという2つの検索方法があるの…

【PostgreSQL】緯度経度を検索

前回GISオブジェクトのデータ(緯度経度)を検索条件に検索することを行った uga-box.hatenablog.com 今度は他の検索条件で緯度経度を取得することを考えた 当初DTOにPoint型のプロパティを用意すればいい感じにやってくれると思ったがうまくいかなかった pr…

【PostgreSQL】GISデータの作成と緯度経度での検索

PostGISの利用準備ができたのでデータをいれたい uga-box.hatenablog.com データの作成 以下のようなcsvファイルを作り、COORDINATEテーブルに格納する COORDINATE_ID LAT_LNG 5085f82b-680d-4d30-bf17-29fa7e5aeee3 SRID=4326;POINT(43.0230805 141.3223676…

【PostgreSQL】PostGISを利用する

データベースに位置情報などを格納しておき、ある範囲(定点やkm圏内、好きな図形の中)に含まれるデータを検索したい PostgreSQLを使っている場合はどうやらPostGISというのがよさそうということで使ってみることにした PostGIS PostGISはPostgreSQLの拡張…

【Cloud SQL】データベースフラグの確認

Cloud SQL(PostgreSQL)のパフォーマンスを向上する目的で、VACUUMを実行したい Cloud SQLではPostgreSQLのパラメータの調整、オプションの調整、インスタンスの構成や調整などの操作をフラグで行うことができる VACUUMもこのフラグで設定する フラグについ…

【PostgreSQL】VACUUMとは

PostgreSQLのパフォーマンスチューニングで、VACUUMというのを知ったので調べてみた VACUUMとは不要になった領域の回収を行うコマンド PostgreSQL は追記型のデータベースのため、レコードの削除時、更新時に不要な領域が溜まっていく 不要な領域が溜まって…

【PostgreSQL】文字列を置換する

末尾に言語コードがついたID 12345:en や 12345:jaなどがA_TABLEテーブルに格納されている このテーブルから、IDが末尾:enのものを検索して、言語コード部分enを別の言語コードjaに置換してB_TABLEに格納したい つまり、B_TABLEテーブルには英語をコピーした…

【PostgreSQL】COPYコマンドを使ってローカルにあるcsvファイルをインポートしたい

PostgresのCOPY FROMコマンドを使ってcsvファイルをテーブルに読み込ませたい さらにはpsqlにそのsqlを渡してコマンドラインで実行したい 実行環境 Postgresサーバーはdockerで起動している psqlはローカルマシンにインストール済み psqlでsqlを実行する書式…

【Doma】PostgresのJSON型を利用する

以前、Domaを使ってSpring Boot アプリケーションからPostgresに接続した uga-box.hatenablog.com これに追加で、JSON型のカラムを用意したい ## Entity Entityにプロパティを追加する 方はStringで定義する @Id @Column(name = "search_condition") String …

【PostgreSQL】json型とjsonb型

PostgreSQLのJSONデータ型にはjson型とjsonb型という2種類のデータ型があることを知ったので違いを調べてみた www.postgresql.jp 上のドキュメントを引用してまとめる 現実的に主要な違いは効率 jsonデータ型は入力テキストの正確なコピーで格納し、処理関数…

【PostgreSQL】Dockerコンテナに入ってpsqlを使う

Postgresのpostgres:11-alpineイメージで起動したdockerコンテナに入ってpsqlコマンドを使いたい psqlがローカルに入っていなかったので、psqlコマンドをほんのちょっと試したいがため 普通にコンテナに入って叩いてみる $ docker exec -it postgres_server …

【Sequelize】SequelizeでPostgresqlに接続する

PromiseベースのNode.js ORMのSequelizeを使ってPostgresqlに接続してみる sequelize.org $ npm install sequelize $ npm install pg pg-hstore DB接続 import { Sequelize } from 'sequelize'; const sequelize = new Sequelize('postgres://user:pass@exam…

【PostgreSQL】docker-composeで環境構築

PostgreSQLを使うことになったのでdocker-composeでローカルに環境をつくりたい docker-compose.yamlの設定を記載しておく version: '3' services: postgresql: image: "postgres:11-alpine" container_name: "postgres_server" ports: - "5432:5432" volume…

【PostgreSQL】psqlを使ったPostgreSQLへの接続

コマンドラインベースで利用できる psql を利用してPostgreSQLに接続した作業メモ 以下のコマンドで接続する $ psql "host=<HOST_NAME> port=5432 dbname=<DB_NAME> user=<USER_NAME> password=<PASSWORD>" オプションの一覧を表示 $ postgres => \? 使用可能なデータベース一覧を表示 $ postgres => \</password></user_name></db_name></host_name>…