POSTGRESQL 創建表結構、修改字段、導入導出數據庫(支持CSV)


這兩個月經常使用postgresql,總結一些經常使用的語句:

--創建表
CREATE TABLE customers 
( 
  customerid SERIAL primary key , 
  companyname character varying, 
  contactname character varying, 
  phone character varying, 
  country character varying 
)
--修改字段
ALTER TABLE ticket_report_group_to_report alter column id type integer ;
--添加字段
alter table merchant add column thenow timestamp with time zone default now();
--添加主鍵
alter table ticket_report_group_to_report DROP COLUMN id RESTRICT, add COLUMN id serial PRIMARY KEY
--窗口函數
SELECT * FROM (SELECT rank() over(partition by c.source_id,c.wrapper_id order by id desc) as rank_num, * FROM mirror.cpc_ticket c) as a WHERE a.rank_num <= 1
--修改default
alter table merchant alter column comment set default '';
--導出數據表
pg_dump -h l-t**ta1.tkt.cn6.***.com -p 5432 -U pdata -d log_analysis -t wirelessapi_log_2013_09_02 -t wirelessapi_log_2013_09_03  > e:\wirelessapi_log_0902-03.sql

下面是導入、導出數據庫:

    # -h: PostgreSQL服務器的主機為192.168.149.137。
    # -U: 登錄用戶為postgres。
    # -t: 導出表名以test開頭的數據表,如testtable。
    # -a: 僅僅導出數據,不導出對象的schema信息。
    # -f: 輸出文件是當前目錄下的my_dump.sql
    # mydatabase是此次操作的目標數據庫。
    /> pg_dump -h 192.168.149.137 -U postgres -t test* -a -f ./my_dump.sql mydatabase
    #-c: 先輸出刪除數據庫對象的SQL命令,在輸出創建數據庫對象的SQL命令,這對於部署干凈的初始系統或是搭建測試環境都非常方便。
    /> pg_dump -h 192.168.220.136 -U postgres -c -f ./my_dump.sql mydatabase
    #導出mydatabase數據庫的信息。在通過psql命令導入時可以重新指定數據庫,如:/> psql -d newdb -f my_dump.sql
    /> pg_dump -h 192.168.220.136 -U postgres -f ./my_dump.sql mydatabase
    #導出模式為my_schema和以test開頭的數據庫對象名,但是不包括my_schema.employee_log對象。
    /> pg_dump -t 'my_schema.test*' -T my_schema.employee_log mydatabase > my_dump.sql
    #導出east和west模式下的所有數據庫對象。下面兩個命令是等同的,只是后者使用了正則。
    /> pg_dump -n 'east' -n 'west' mydatabase -f my_dump.sql
    /> pg_dump -n '(east|west)' mydatabase -f my_dump.sql

如果僅僅導出數據表結構,需要添加 -s 參數,例如:

/opt/pg93/bin/pg_dump -h ${HOST} -U ${USER} -T -s -c -f ${PATH}${DATE}_log_analysis.sql log_analysis

如果需要導入數據文件,數據文件又比較大,那么可以這么執行

\i /home/qiu.li/git/ticket-crm/deploy/AllContactPersonInfo.txt 

當然還有更方便的導出文件的命令copy

\copy (SELECT ip_format,ip,country, area, region, city, county FROM analytics_ip_data where area is not null) to '/tmp/ip/analytics_ip_data.csv';

從csv文件導入到數據庫的方法

\COPY vender(sid,vender_id,vender_name,connector,created_by,created_dt,version,del_flg) from 'E:\Vendor.csv' WITH CSV  HEADER;

記住添加反斜線,否則會認為在服務器端執行,而找不到路徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM