1. 程式人生 > >Phoenix(3):Phoenix執行sql指令碼

Phoenix(3):Phoenix執行sql指令碼

一、實現功能

將需要執行sql語句寫入指令碼,然後,使用psql.py執行。

二、步驟

1.指令碼內容

(1)us_population.sql

CREATE TABLE IF NOT EXISTS us_population (
"state" CHAR(2) NOT NULL,  
"city" VARCHAR(18) NOT NULL, 
"info"."population" BIGINT,
CONSTRAINT my_pk PRIMARY KEY ("state", "city")
);

(2)us_population_queries.sql

SELECT "state" as "State",count("city") as "City Count",sum("population") as "Population Sum" FROM us_population GROUP BY "state" ORDER BY sum("population") DESC;

2.執行指令碼

(1)建立表

bin/psql.py localhost /opt/datas/phoenix_sql/us_population.sql

(2)phoenix中向表中插入資料

upsert into "US_POPULATION"("state","city","population") values('NY','New York',8143197);  
upsert into "US_POPULATION"("state","city","population") values('CA','Los Angeles',3844829); 
upsert into "US_POPULATION"("state","city","population") values('IL','Chicago',2842518);
upsert into "US_POPULATION"("state","city","population") values('TX','Houston',2016582);
upsert into "US_POPULATION"("state","city","info"."population") values('PA','Philadelphia',1463281);  
upsert into "US_POPULATION"("state","city","info"."population") values('AZ','Phoenix',1461575);
upsert into "US_POPULATION"("state","city","info"."population") values('TX','San Antonio',1256509);  
upsert into "US_POPULATION"("state","city","info"."population") values('CA','San Diego',1255540);
upsert into "US_POPULATION"("state","city","info"."population") values('TX','Dallas',1213825);
upsert into "US_POPULATION"("state","city","info"."population") values('CA','San Jose',912332);

(3)查詢表

bin/psql.py localhost /opt/datas/us_population_queries.sql

結果:

18/06/23 00:26:16 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/06/23 00:26:17 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
St                               City Count                           Population Sum 
-- ---------------------------------------- ---------------------------------------- 
NY                                        1                                  8143197 
CA                                        3                                  6012701 
TX                                        3                                  4486916 
IL                                        1                                  2842518 
AZ                                        1                                  1500000 
PA                                        1                                  1463281