#postgres 설치 참조 : https://wiki.postgresql.org/wiki/Apt
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.5 pgadmin3
#유저 생성
sudo -u postgres createuser -W dojin
#유저 db 생성
sudo -u postgres createdb testdb -O dojin
#쉘 접속
psql testdb
#*.conf 파일 위치
sql -> show config_file;
/etc/postgresql/9.5/main/*.conf
#*.conf 설정법
postgresql.conf
=> address = "*"
pg_hba.conf
=> host all all 0.0.0.0/0 md5
#기타
sudo service postgres [stop/start]
#설치 2 - yum 설치
#https://wiki.postgresql.org/wiki/YUM_Installation
exclude=postgresql*
yum localinstall http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm
yum install postgresql94-server
#data directory
ls /var/lib/pgsql/9.4/data/
#한번만 하면댐.
service postgresql-9.4 initdb
#만약 안된다면
/usr/pgsql-9.4/bin/postgresql94-setup initdb
#auto start .
chkconfig postgresql-9.4 on
#서비스 시작
service postgresql-9.4 start
#삭제
yum erase postgresql94*
2016년 5월 4일 수요일
Spark-postgreSQL 연동
//Spark 실행할때 jdbc jar를 지정
/*
spark shell --driver-class-path /usr/share/java/postgresql93-jdbc.jar
/*
/*
DOMAIN_NAME : ip 혹은 도메인
DATABASE_NAME : 접속할 Database 이름
USER_NAME : 유저 명
PASSWORD : 비밀번호
변수를 만들어서 입력 / 하드코딩
*/
*/
val url = "jdbc:postgresql://DOMAIN_NAME/DATABASE_NAME?user=USER_NAME&password=PASSWORD"
/*
TABLE_NAME : 데이터를 가져올 테이블 명
rows : RDD 형태로 반환 (FROM 절을 구현한것)
*/
*/
val rows = sqlContext.load("jdbc", Map("url" -> url ,"dbtable"->"TABLE_NAME"))
/*
filter 함수 에서 WHERE 절을 구현
filter 함수 에서 WHERE 절을 구현
select 함수 에서 SELECT 절을 구현
*/
*/
row.filter("COLUMN_NAME like 'test'").select("col1","col2")
/*
다시 테이블에 저장하는 소스
*/
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.{StructType,StructField,StringType};
/*
저장 할 테이블에 컬럼 명을 공백을 두고 생성
schema에서 StructType 타입으로 변경 됨
*/
val schemaString = "col1 col2 col3"
val schema =
StructType(
schemaString.split(" ").map(fieldName => StructField(fieldName, StringType, true)))
/*
데이터 (rdd) Row 형태로 변환
테스트에서는 "data1_data2_data3" 을 하나의 로우로 가진 것을 이용
*/
val rowRDD = rdd.map(_.split("_")).map(p => Row(p(0),p(1),p(2)))
/*
dfr : Row로 변환된 rdd와 schema로 Data Frame 생성 (Spark DF의 연산들을 모두 사용 가능)
insertIntoJDBC : postgreSQL에 저장하는 함수, 세번째 인자로 true를 주면 기존 테이블 삭
제 하고 다시 생성 함
*/
val dfr = sqlContext.createDataFrame(rowRDD, schema)
dfr.insertIntoJDBC(url, "TABLE_NAME", true)
참조 : https://eradiating.wordpress.com/2015/04/17/using-spark-data-sources-to-load-data-from-postgresql/
/*
다시 테이블에 저장하는 소스
*/
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.{StructType,StructField,StringType};
/*
저장 할 테이블에 컬럼 명을 공백을 두고 생성
schema에서 StructType 타입으로 변경 됨
*/
val schemaString = "col1 col2 col3"
val schema =
StructType(
schemaString.split(" ").map(fieldName => StructField(fieldName, StringType, true)))
/*
데이터 (rdd) Row 형태로 변환
테스트에서는 "data1_data2_data3" 을 하나의 로우로 가진 것을 이용
*/
val rowRDD = rdd.map(_.split("_")).map(p => Row(p(0),p(1),p(2)))
/*
dfr : Row로 변환된 rdd와 schema로 Data Frame 생성 (Spark DF의 연산들을 모두 사용 가능)
insertIntoJDBC : postgreSQL에 저장하는 함수, 세번째 인자로 true를 주면 기존 테이블 삭
제 하고 다시 생성 함
*/
val dfr = sqlContext.createDataFrame(rowRDD, schema)
dfr.insertIntoJDBC(url, "TABLE_NAME", true)
참조 : https://eradiating.wordpress.com/2015/04/17/using-spark-data-sources-to-load-data-from-postgresql/
[postgreSQL] DDL _ 현재시간을 갖는 컬럼 CREATE 문
CREATE TABLE R_ST_TOTAL_PAPER(tPaper_S_key serial primary key, tPaper int, insertDate date not null default now());
//간단하게 default now() 때려 버리면 됨.
//간단하게 default now() 때려 버리면 됨.
[Java] SQL query 인자 전달
//자바에서 SQL에 인자 형태로 값전달
private int getXNum(String s, String table)
{
try {
String squery = "select num from " + table + " where name = ?";
PreparedStatement spstmt = null;
spstmt = con.prepareStatement(squery);
spstmt.setString(1, s);
rs = spstmt.executeQuery();
if (rs.next()) {
return rs.getInt("num");
}
} catch (Exception e) {
// TODO: handle exception
e. printStackTrace();
}
return -1;
}
private int getXNum(String s, String table)
{
try {
String squery = "select num from " + table + " where name = ?";
PreparedStatement spstmt = null;
spstmt = con.prepareStatement(squery);
spstmt.setString(1, s);
rs = spstmt.executeQuery();
if (rs.next()) {
return rs.getInt("num");
}
} catch (Exception e) {
// TODO: handle exception
e. printStackTrace();
}
return -1;
}
피드 구독하기:
글 (Atom)