【Linux】「Postgres SQL」のテーブルを期間指定して「シェルスクリプト」でエクスポートする方法!

目次

シェルスクリプトの内容

前日の日付を取得し、0時00分〜23時59分までのデータに絞りCSVファイルで出力する処理です。

#!/bin/bash

# 前日の日付取得
LOG_DATE=$(date --date "1 days ago" '+%Y%m%d')
LOG_DATE_DB=$(date --date "1 days ago" '+%Y-%m-%d')

# 前日の日付入りディレクトリを作成
mkdir /home/username/works/${LOG_DATE}_datas/

# Postgres接続用の変数
PG_HOSTNAME=192.168.1.101
PG_PORT=5432
PG_USER=postgres
PGPASSWORD=password
PG_DATABASE=postgresdb

# テーブルを選択(スキーマ名・テーブル名は該当する値に置き換えてください)
#(updated_at カラム内で前日の0:00から23:59をソートする処理)
RUN_SQL_SENTENCE_LOG="select * from スキーマ名.テーブル名 where updated_at between '"${LOG_DATE_DB}" 00:00:00' AND '"${LOG_DATE_DB}" 23:59:59';"

# テーブルの出力先を指定(ファイル名は該当する値に置き換えてください)
#(先ほど作成したディレクトリ内に日付入りのCSVファイルを作成する処理)
OUTPUT_FILE_NAME_LOG="/home/username/works/"${LOG_DATE}"_datas/"${LOG_DATE}"_ファイル名.csv"


# 処理(CSVの出力)
echo "Postgresql に接続します。"
PGPASSWORD="${PGPASSWORD}" psql -h "${PG_HOSTNAME}" -p "${PG_PORT}" -U "${PG_USER}" -d "${PG_DATABASE}" -c "${RUN_SQL_SENTENCE_LOG}" -A -F, > "${OUTPUT_FILE_NAME_LOG}"
# -h hostname
# -p port
# -U username
# -d database
# -c SQL文
# -A table output mode
# -F format カンマ区切り(csv)
#  psqlでSQLを実行した結果の標準出力をリダイレクト(>) でファイルとして出力。

echo "すべての処理が完了しました。"
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次