Monday, 26 March 2018

Mengubah Tipe Data Kolom dari Character menjadi Numeric

Status : Draft

Terkadang kita keliru menentukan tipe data suatu kolom, dan ketika tabel sudah terisi data, kita baru sadar akan kekeliruan tersebut. Jika menggunakan pgAdmin, kita tidak dapat mengubah tipe data suatu kolom dari character ke numerik.

Untuk mengubahnya kita dapat menggunakan SQL :

ALTER TABLE dekan ALTER COLUMN dekan type bigint using dekan::bigint;

Referensi

  1. How to change column datatype from character to numeric in PostgreSQL 8.4, https://stackoverflow.com/questions/7683359/how-to-change-column-datatype-from-character-to-numeric-in-postgresql-8-4

Friday, 9 March 2018

Copy Paste PostgreSQL Schema

Terkadang, kita ingin melakukan copy paste Schema pada PostgreSQL, baik strukturnya saja atau datanya saja, berikut adalah cara copy paste schema pada PostgreSQL :

Copy Paste PostgreSQL Beserta Datanya


#!/bin/bash                                                                                                                                          
##copy_schema.sh                                                                                                                                     
dbusername="$1"
dbname="$2"                                                                                                                                          
from_schema="$3"                                                                                                                                     
to_schema="$4"                                                                                                                                       
                                                                                                                                                     
                                                                                                                                                     
pg_dump -U "$from_schema" -h localhost -W --schema="$from_schema" "$dbname" | sed "s/$from_schema/$to_schema/g" > "$to_schema".sql                         
echo "\i "$to_schema".sql" | psql -v ON_ERROR_STOP=1  -U "$to_schema" -d "$dbname" -h localhost -W            

Copy Paste PostgreSQL Strukturnya Saja

#!/bin/bash                                                                                                                                          
##copy_schema.sh                                                                                                                                     
dbusername="$1"
dbname="$2"                                                                                                                                          
from_schema="$3"                                                                                                                                     
to_schema="$4"                                                                                                                                       
                                                                                                                                                     
                                                                                                                                                     
pg_dump -U "$from_schema" -h localhost -W --schema-only --schema="$from_schema" "$dbname" | sed "s/$from_schema/$to_schema/g" > "$to_schema".sql           
echo "\i "$to_schema".sql" | psql -v ON_ERROR_STOP=1  -U "$to_schema" -d "$dbname" -h localhost -W    


Cara menggunakan : ./copy_schema.sh username nama_schema_lama nama_schema_baru

Tuesday, 8 August 2017

Ambil record pertama dari setiap ID pada query ORDER BY

Status : Draft



Bagaimana kita mengambil id_soal pertama dari setiap kelompok id_soal ? Solusinya bisa intip di [1]

Atau contoh lain :

WITH par AS (
 SELECT ROW_NUMBER() OVER (PARTITION BY id_paragraph) AS rn, id_paragraph
                           FROM paragraph_soal WHERE id_paragraph='2013 (A.11)20-22'
)
SELECT  * from par where rn = 1;


Referensi 


  1. PostgreSQL: Select only the first record per id based on sort order, https://stackoverflow.com/questions/18987650/postgresql-select-only-the-first-record-per-id-based-on-sort-order

Sunday, 30 April 2017

Backup Offline PostgreSQL

Status  : Draft

Untuk backup offline, kita dapat mengcopy seluruh folder data PostgreSQL (/var/lib/postgresql/{versi}/main) ke database yang baru, asalkan versinys PostgreSQL nya sama.

Referensi


  1. Is it possible to backup my ubuntu postgresql database by copying the /var/lib/postgresql/9.1/main file and pasting it back in?, https://dba.stackexchange.com/questions/93607/is-it-possible-to-backup-my-ubuntu-postgresql-database-by-copying-the-var-lib-p
  2. Upgrading PostgreSQL from 9.3 to 9.5 on Ubuntu Raw, https://gist.github.com/johanndt/6436bfad28c86b28f794

Instalasi

Status : Draft

Ubuntu

Ketika melakukan instalasi, sebetukan nama versinya, misal :

sudo apt-get install postgresql-9.6 

jika tidak akan menemui masalah seperti [1].


Referensi

Monday, 13 March 2017

Backup & Restore PostgreSQL

Status : Draft

Dengan pg_dump & pg_restore & psql 

Restore 

psql -U <username> -d <dbname> -1 -f <filename>.sql 
pg_restore -U <username> -d <dbname> -1 <filename>.dump

Backup Restore Berdasarkan SQL Query



Contoh :

Untuk backup

psql -h localhost -d banksoal -U postgres -W -c "copy (select * from soal_naskah where id_soal in(48624,48603)) to '/tmp/copy_soal/soal_naskah.sql'"

Untuk restore

copy soal_naskah from '/tmp/copy_soal/soal_naskah.sql'

Referensi


  1. Export specific rows from a PostgreSQL table as INSERT SQL script, http://stackoverflow.com/questions/12815496/export-specific-rows-from-a-postgresql-table-as-insert-sql-script