色々やるけど、database について。
基本的に、簡単な SQL 文は調べられていると便利だし、新しく始める場合は Postgres を使っておけば OK。
PostgreSQL
Basic
ECS とかやってると、簡単に table
追加することができるので、逆にその場で SQL いじることが多くなる気がする。
ユーザーを作るところまでやれば、アプリに hand over 出来るので、それをやるのに psql は以下,
# create a user # that can make a database # you might need to do -U postgres createuser test_cli_user -d # create database createdb -U test_cli_user test_cli_db psql -U test_cli_user test_cli_db $ \du $ \? $ \d # delete a database dropdb -U test_cli_user test_cli_db dropuser test_cli_user
Backup & Restore
pg_dump -U postgres -h localhost -F c -b -v -f mydb.backup mydb
fly.io
などで、ポートをトンネルしている場合 (using fly.io)
pg_dump -h localhost -p 15432 -U postgres -d a80_survey -f a80_survey_dump
pg_restore -U postgres -h localhost -d new_db -v mydb.backup
怖いので、
createdb -U postgres new_db
してすぐ上の pg_restore
しちゃう。
でも普通に SQL 文を psql
中に保存したければ、
\COPY (SELECT id, name, email FROM users WHERE active = true) TO '/home/user/active_users.csv' WITH CSV HEADER;
でも、これなら、 *.sql
を作っておけばいいような気もする。
そのほかめも
ALTER TABLE XXX DROP CONSTRAINT yyy
docker
docker run --name database \ --restart always \ -e POSTGRES_PASSWORD=my_password \ -p 5432:5432 \ -v postgres_backup:/backups \ -d postgres
繋げる:
psql -h localhost -p 5432 -U postgres -d postgres
外部からアクセスしたければ、 -h
を変える
Golang
go get github.com/jmoiron/sqlx go get github.com/lib/pq
package main import ( "fmt" "github.com/jmoiron/sqlx" _ "github.com/lib/pq" ) func main() { _, err := sqlx.Connect("postgres", "user=test_cli_user dbname=test_cli_db sslmode=disable") if err != nil { fmt.Printf("%s", err) } }
sqlc
をすごく試してみたい
Rust
So far using the sqlx library seems to be a reasonable option. It is not a ORM, yet covers essential functionality to make your life easier. (like migration)
cli
https://github.com/launchbadge/sqlx/blob/main/sqlx-cli/README.md#usage
sqlx database --help
migration
sqlx migrate add add_meta
を ’0002addmeta.sql’ というファイルが保存されるので、
alter table todos add column meta JSONB;