pgsql PostgreSQL命令

commands
Подключение
sudo -u ermakov psql



Перезагрузка
sudo service postgresql restart



Подключение к определенной БД 
\c databasename

mysql: SHOW TABLES
postgresql: \d
postgresql: SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';


mysql: SHOW DATABASES
postgresql: \l
postgresql: SELECT datname FROM pg_database;


mysql: SHOW COLUMNS
postgresql: \d table
postgresql: SELECT column_name FROM information_schema.columns WHERE table_name ='table';


mysql: DESCRIBE TABLE
postgresql: \d+ table
postgresql: SELECT column_name FROM information_schema.columns WHERE table_name ='table';

CREATE TABLE "responses" (
	"response" jsonb NOT NULL
) WITH (
  OIDS=FALSE
);

pgsql 导入数据库还原

restoreDB
pg_restore -h localhost -p 5432 -U user -d homemania -v "/home/user/Downloads/hm.sql"


Или если input file does not appear to be a valid archive

То вот так 
cat db.txt | psql dbname

pgsql 插入主人

插入主人

inset to masters
insert into masters (first_name, last_name, age) values
('Попова', 'Ольга', 22),
('Петрова', 'Наталья', 27),
('Соколова', 'Ирина', 25),
('Нефедова', 'Мария', 32),
('Архипова', 'Оксана', 30),
('Надеждина', 'Руслана', 24);

insert into public. (title) values
('Косметология'),
('Татуаж'),
('Визаж'),
('Аппаратная косметология'),
('Ногтевой сервис'),
('Эпиляция'),
('Депиляция'),
('Парикмахерские услуги'),
('Массаж');


insert into services (title) values
('Мужская стрижка'),
('Стрижка бороды и усов'),
('Женская стрижка'),
('Мужская укладка'),
('Стрижка челки'),
('Укладка Люкс'),
('Прическа'),
('Плетение'),
('Окрашивание'),
('Снятие цвета'),
('Придание оттенка'),
('Мелирование «калифорнийское»'),
('Осветление корней'),
('Стрижка'),
('Стрижка детская'),
('Укладка женская'),
('Мелирование'),
('Окрашивание корней'),
('Прическа вечерняя'),
('Прическа свадебная'),
('Стрижка мужская модельная'),
('Стрижка наголо'),
('Стрижка под насадку'),
('Окантовка'),
('Стрижка усов'),
('Стрижка усов и бороды'),
('Пробная свадебная прическа'),
('Стрижка женская'),
('Вечерняя прическа'),
('Окрашивание волос'),
('Тонирование волос'),
('Колорирование'),
('Модельные стрижки'),
('Стрижка горячими ножницами'),
('Биозавивка'),
('Омбре'),
('Стрижка мужская под насадку'),
('Стрижка бровей'),
('Стрижка детская модельная'),
('Укладка волос'),
('Обесцвечивание'),
('Коррекция бороды'),
('Стрижка волос'),
('Укладка повседневная'),
('Укладка вечерняя'),
('Свадебная прическа'),
('Детская стрижка'),
('Плетение кос'),
('Классический маникюр'),
('Аппаратный маникюр'),
('Маникюр'),
('Педикюр'),
('Нанесение лаком'),
('Покрытие Shellac'),
('Снятие Shellac'),
('Спа уход'),
('Наращивание ногтей'),
('Коррекция ногтей'),
('Европейский маникюр'),
('Мужской маникюр'),
('Экспресс маникюр'),
('Покрытие ногтей'),
('Аппаратный педикюр'),
('Педикюр комбинированный'),
('Мужской педикюр'),
('Покрытие ногтей на ногах'),
('Покрытие Френч ногтей на ногах'),
('Экспресс педикюр'),
('Маникюр с покрытием'),
('Покрытие лаком'),
('Наращивание ногтей гелем'),
('Коррекция нарощенных ногтей'),
('Коррекция наращенных ногтей Френч'),
('Снятие лака'),
('Покрытие ногтей ног Shellac'),
('Наращивание ногтей «френч»'),
('Коррекция «френч»'),
('Маникюр обрезной женский'),
('Маникюр обрезной мужской'),
('Педикюр обрезной женский'),
('Педикюр обрезной мужской'),
('Парафинотерапия'),
('Покрытие ногтей обычным лаком'),
('Покрытие гель-лак'),
('Снятие гель-лак'),
('Маникюр женский'),
('Маникюр мужской'),
('Cнятие лак'),
('Cнятие Shellac'),
('Наращивание ногтей French'),
('Коррекция ногтей French'),
('Покрытие French'),
('Массаж рук'),
('Маникюр класический'),
('Маникюр комбинированый'),
('Укрепление ногтей'),
('Комбинированный маникюр'),
('Укрепление натуральных ногтей'),
('Педикюр классический'),
('Педикюр аппапатный'),
('Маникюр аппаратный'),
('Комплексная чистка с уходом'),
('Экспресс уход'),
('Депиляция ног выше колена'),
('Депиляция ног ниже колена'),
('Депиляция ног полностью'),
('Депиляция бикини'),
('Депиляция бикини полная'),
('Отбеливание кожи'),
('Парафинотерапия рук'),
('Ультразвуковая чистка'),
('Ультразвуковая терапия'),
('Чистка лица'),
('Парафинотерапия ног'),
('Депиляция ног целиком'),
('Депиляция зоны подмышек'),
('Лазерная эпиляция верхней губы'),
('Лазерная эпиляция зоны подмышек'),
('Лазерная эпиляция ног целиком'),
('Депиляция ног до колен'),
('Депиляция подмышек'),
('Ультразвуковая чистка лица'),
('Классический массаж лица'),
('Восковая депиляция ног до колена'),
('Восковая депиляция ног полностью'),
('Восковая депиляция линии бикини'),
('Восковая депиляция глубокое бикини жен./муж.'),
('Восковая депиляция подмышек'),
('Чистка комбинированная'),
('Лифтинг'),
('Фотоомоложение лица'),
('Восковая депиляция зоны над верхней губой'),
('Восковая депиляция ног от колена'),
('Шугаринг зоны над верхней губой'),
('Шугаринг подмышечной впадины'),
('Шугаринг рук до локтя'),
('Шугаринг рук полностью '),
('Шугаринг ног до колена'),
('Шугаринг ног от колена'),
('Шугаринг ног полностью'),
('Шугаринг зоны бикини'),
('Шугаринг зоны глубокого бикини'),
('Лазерная эпиляция подмышечной области'),
('Лазерная эпиляция ног'),
('Мезотерапия волос'),
('Light макияж'),
('Дневной макияж'),
('Коктейльный макияж'),
('Вечерний макияж'),
('Коррекция бровей'),
('Окрашивание хной'),
('Экспресс макияж'),
('Свадебный макияж'),
('Кератиновое ламинирование ресниц'),
('Air make-up'),
('Окрашивание ресниц'),
('Окрашивание бровей'),
('Коррекция нарощенных ресниц'),
('Макияж экспресс'),
('Макияж дневной'),
('Макияж вечерний'),
('Покраска бровей'),
('Покраска ресниц'),
('Наращивание ресниц'),
('Пробный макияж для свадьбы'),
('Вечерний макияж'),
('Окраска бровей'),
('Окраска ресниц'),
('Форма бровей'),
('Коррекция ресниц'),
('Антицеллюлитный массаж'),
('Массаж шейно воротниковая зона'),
('Массаж ног'),
('Массаж стоп'),
('Массаж головы'),
('Массаж спины'),
('Общий массаж'),
('Массаж антицеллюлитный'),
('Массаж медовый'),
('Массаж классический'),
('Классический массаж спины'),
('Медовый массаж'),
('Медовый бедра'),
('Медовый спина'),
('Медовый живот'),
('Перманентный макияж'),
('Татуаж бровей'),
('Татуаж губ'),
('Микроблейдинг'),
('Ультразвуковая чистка лица'),
('Ультразвуковая чистка спины'),
('Мануальная чистка спины'),
('Мануальная чистка зоны декольте'),
('Шугаринг рук полностью'),
('Шугаринг зоны глубокого бикини'),
('Шугаринг зоны бикини'),
('Шугаринг ног полностью'),
('Шугаринг ног от колена'),
('Шугаринг ног до колена'),
('Шугаринг рук до локтя'),
('Шугаринг подмышечной впадины'),
('Шугаринг зоны над верхней губой'),
('Восковая депиляция ног от колена'),
('Восковая депиляция зоны над верхней губой'),
('Восковая депиляция подмышек'),
('Восковая депиляция глубокое бикини жен./муж.'),
('Восковая депиляция линии бикини'),
('Восковая депиляция ног полностью'),
('Восковая депиляция ног до колена'),
('Депиляция подмышек'),
('Депиляция ног до колен'),
('Депиляция зоны подмышек'),
('Депиляция ног целиком'),
('Депиляция бикини полная'),
('Депиляция бикини'),
('Депиляция ног полностью'),
('Депиляция ног ниже колена'),
('Депиляция ног выше колена'),
('Солярий'),
('Торфяное обертывание'),
('Шоколадное обертывание'),
('Премиум спа'),
('Лазерная эпиляция ног'),
('Лазерная эпиляция подмышечной области'),
('Лазерная эпиляция зоны бикини (бельевое)'),
('Лазерная эпиляция ног целиком'),
('Лазерная эпиляция зоны подмышек'),
('Лазерная эпиляция верхней губы');



insert into service_categorie(categorie_id, service_id) values
(8,1),
(8,2),
(8,3),
(8,4),
(8,5),
(8,6),
(8,7),
(8,8),
(8,9),
(8,10),
(8,11),
(8,12),
(8,13),
(8,14),
(8,15),
(8,16),
(8,17),
(8,18),
(8,19),
(8,20),
(8,21),
(8,22),
(8,23),
(8,24),
(8,25),
(8,26),
(8,27),
(8,28),
(8,29),
(8,30),
(8,31),
(8,32),
(8,33),
(8,34),
(8,35),
(8,36),
(8,37),
(8,38),
(8,39),
(8,40),
(8,41),
(8,42),
(8,32),
(8,44),
(8,45),
(8,46),
(8,47),
(8,48);




insert into service_categorie(categorie_id, service_id) values
(5,49),
(5,50),
(5,51),
(5,52),
(5,53),
(5,54),
(5,55),
(5,56),
(5,57),
(5,58),
(5,59),
(5,60),
(5,61),
(5,62),
(5,63),
(5,64),
(5,65),
(5,66),
(5,67),
(5,68),
(5,69),
(5,70),
(5,71),
(5,72),
(5,73),
(5,74),
(5,75),
(5,76),
(5,77),
(5,78),
(5,79),
(5,80),
(5,81),
(5,82),
(5,83),
(5,84),
(5,85),
(5,86),
(5,87),
(5,88),
(5,89),
(5,90),
(5,91),
(5,92),
(5,93),
(5,94),
(5,95),
(5,96),
(5,97),
(5,98),
(5,99),
(5,100),
(5,101);







insert into service_categorie(categorie_id, service_id) values
(1,102),(1,103),(1,104),(1,105),(1,106),(1,107),(1,108),(1,109),(1,110),(1,111),(1,112),(1,113),(1,114),
(1,115),(1,116),(1,117),(1,118),(1,119),(1,120),(1,121),(1,122),(1,123),(1,124),(1,125),(1,126),(1,127),
(1,128),(1,129),(1,130),(1,131),(1,132),(1,133),(1,134),(1,135),(1,136),(1,137),(1,138),(1,139),(1,140),
(1,141),(1,142),(1,143),(1,144),(1,145);




insert into service_categorie(categorie_id, service_id) values
(3,146),(3,147),(3,148),(3,149),(3,150),(3,151),(3,152),(3,153),(3,154),(3,155),(3,156),(3,157),
(3,158),(3,159),(3,160),(3,161),(3,162),(3,163),(3,164),(3,165),(3,166),(3,167),(3,168),(3,169),
(3,170);


insert into service_categorie(categorie_id, service_id) values
(9,171),
(9,172),
(9,173),
(9,174),
(9,175),
(9,176),
(9,177),
(9,178),
(9,179),
(9,180),
(9,181),
(9,182),
(9,183),
(9,184),
(9,185);


insert into service_categorie(categorie_id, service_id) values
(2,186),(2,187),(2,188),(2,189);


insert into service_categorie(categorie_id, service_id) values
(4,190),(4,191),(4,192),(4,193);



insert into service_categorie(categorie_id, service_id) values
(7,194),(7,195),(7,196),(7,197),(7,198),(7,199),(7,200),(7,201),(7,202),(7,203),(7,204),(7,205),(7,206),
(7,207),(7,208),(7,209),(7,210),(7,211),(7,212),(7,213),(7,214),(7,215),(7,216),(7,217),(7,218);



insert into service_categorie(categorie_id, service_id) values
(6,223),(6,224),(6,225),(6,226),(6,227),(6,228);

select categories.title as category, services.title as services from service_categorie
left join services using(service_id)
left join categories using(categorie_id) where categorie_id = 8;

pgsql 显示数据库

showDatabases
\l 

pgsql 选择数据库postgres

select_database
\c DATABASE;

pgsql 存储过程

存储过程

存储过程.pgsql
CREATE OR REPLACE PROCEDURE P_GK_FX_TJ_NEWS_LAST_HC IS
  --重点人员个人轨迹信息数据量统计 全量统计
  PROC_KSSJ  DATE; --存储过程开始时间
  V_SQL_STMT VARCHAR2(500);
BEGIN
  --变量赋值
  PROC_KSSJ := SYSDATE;
  BEGIN
     EXECUTE IMMEDIATE 'TRUNCATE TABLE GK_FX_TJ_NEWS_LAST';
    --网吧轨迹
    --插入新增统计重点人员编号
    EXECUTE IMMEDIATE 'TRUNCATE TABLE GK_TJCOUNT_ACT_HCADD';


    INSERT INTO GK_TJCOUNT_ACT_HCADD
      SELECT GLBH, COUNT(1),TO_DATE(TO_CHAR(T.SWSJ,'YYYY-MM-DD'),'YYYY-MM-DD') SJ  FROM GK_GJ_WBGJ T  GROUP BY T.GLBH ,TO_CHAR(T.SWSJ,'YYYY-MM-DD');
    COMMIT;

    INSERT INTO GK_FX_TJ_NEWS_LAST
      (GRBH,HDSJ)
      SELECT  B.GLBH,B.SJ
        FROM GK_TJCOUNT_ACT_HCADD B
       WHERE NOT EXISTS (SELECT 1 FROM GK_FX_TJ_NEWS_LAST S WHERE S.GRBH = B.GLBH AND S.HDSJ=B.SJ) ;
    COMMIT;

    UPDATE GK_FX_TJ_NEWS_LAST S
       SET S.WBGJ = NVL((SELECT NUMVALUES FROM GK_TJCOUNT_ACT_HCADD T WHERE T.GLBH = S.GRBH AND T.SJ=S.HDSJ),0);
    COMMIT;

    --旅馆轨迹
    --插入新增统计重点人员编号
    EXECUTE IMMEDIATE 'TRUNCATE TABLE GK_TJCOUNT_ACT_HCADD';

    INSERT INTO GK_TJCOUNT_ACT_HCADD
           SELECT GLBH, COUNT(1),TO_DATE(TO_CHAR(T.RZSJ,'YYYY-MM-DD'),'YYYY-MM-DD') SJ  FROM GK_GJ_LGGJ T  GROUP BY T.GLBH ,TO_CHAR(T.RZSJ,'YYYY-MM-DD');
    COMMIT;

    INSERT INTO GK_FX_TJ_NEWS_LAST
      (GRBH,HDSJ)
      SELECT B.GLBH,B.SJ
        FROM GK_TJCOUNT_ACT_HCADD B
       WHERE NOT EXISTS (SELECT 1 FROM GK_FX_TJ_NEWS_LAST S WHERE S.GRBH = B.GLBH AND S.HDSJ=B.SJ);
    COMMIT;

    UPDATE GK_FX_TJ_NEWS_LAST S
       SET S.LGGJ = NVL((SELECT NUMVALUES FROM GK_TJCOUNT_ACT_HCADD T WHERE T.GLBH = S.GRBH AND T.SJ=S.HDSJ),0);
    COMMIT;


    --民航信息
    --插入新增统计重点人员编号
    EXECUTE IMMEDIATE 'TRUNCATE TABLE GK_TJCOUNT_ACT_HCADD';

    INSERT INTO GK_TJCOUNT_ACT_HCADD
      SELECT GLBH, COUNT(1),TO_DATE(TO_CHAR(T.LGSJ,'YYYY-MM-DD'),'YYYY-MM-DD') SJ  FROM GK_GJ_MHXX T  GROUP BY T.GLBH ,TO_CHAR(T.LGSJ,'YYYY-MM-DD');
    COMMIT;

    INSERT INTO GK_FX_TJ_NEWS_LAST
      (GRBH,HDSJ)
      SELECT B.GLBH,B.SJ
        FROM GK_TJCOUNT_ACT_HCADD B
       WHERE NOT EXISTS (SELECT 1 FROM GK_FX_TJ_NEWS_LAST S WHERE S.GRBH = B.GLBH AND S.HDSJ=B.SJ);
    COMMIT;

    UPDATE GK_FX_TJ_NEWS_LAST S
       SET S.MHXX = NVL((SELECT NUMVALUES FROM GK_TJCOUNT_ACT_HCADD T WHERE T.GLBH = S.GRBH AND T.SJ=S.HDSJ),0);
    COMMIT;

    
    
    ---更新数据为空的
   --- UPDATE GK_FX_TJ_NEWS_LAST S
    --   SET S.WBGJ = NVL(S.WBGJ,0),
    --   S.LGGJ = NVL(S.LGGJ,0),
    ---   S.MHXX = NVL(S.MHXX,0);
  --   COMMIT;
    --成功时记录日志
    INSERT INTO GK_BD_LOG
      (BD_LOG_CODE, PROC_KSSJ, PROC_JSSJ, BD_JZSJC, CGBZ, PROC_NAME)
    VALUES
      (F_GETSEQ(30), PROC_KSSJ, SYSDATE, SYSDATE, 'Y', 'P_GK_FX_TJ_NEWS_LAST_HC');
    COMMIT;
  END;
EXCEPTION
  WHEN OTHERS THEN
    V_SQL_STMT := 'sqlcode:' || SQLCODE || '###sqlerrm:' || SQLERRM;
    ROLLBACK;
    --失败时记录日志
    INSERT INTO GK_BD_LOG
      (BD_LOG_CODE,
       PROC_KSSJ,
       PROC_JSSJ,
       BD_JZSJC,
       CGBZ,
       ERROR_INFO,
       PROC_NAME)
    VALUES
      (F_GETSEQ(30),
       PROC_KSSJ,
       SYSDATE,
       SYSDATE,
       'N',
       V_SQL_STMT,
       'P_GK_FX_TJ_NEWS_LAST_HC');
    COMMIT;
END P_GK_FX_TJ_NEWS_LAST_HC;

pgsql SQL命令+ SSH

SQL命令+ SSH

SQL Commands.pgsql
To login to server with port append -p (port number)
eg. ssh root@vbb -p 2222

To access mysql through ssh:   
use the db user and password dummy!
not the ssh root user, you do need to be logged in as root thought so "su root"
mysql -u (username) -p (db name)
eg.  mysql -u root -p password

to show tables: mysql> show tables;

to alter table name: mysql> ALTER TABLE commIssue RENAME commissue;

to add columns: mysql> ALTER TABLE  `name` ADD COLUMN `whateverworker` VARCHAR( 50 ) NULL;

To import existing table run this command from the directory that the .sql file is in
mysql -p -u (user) (dbname) < filename.sql
eg. mysql> mysql -p -u root password < whatever.sql

To put a backup of databse in current directory
mysqldump -uUSERNAME -pPASSWORD DATABASE > whatever.sql

To Drop Table
DROP TABLE table_name;

pgsql 查找包含给定表达式的所有表字段名称。 <br/>来源:<br/> http://www.postgresonline.com/journal/index.php?/archives/69-How-to-dete

查找包含给定表达式的所有表字段名称。 <br/>来源:<br/> http://www.postgresonline.com/journal/index.php?/archives/69-How-to-determine-if-text-phrase-exists-in-a-table -column.html

select_string_in_db.pgsql
-- SELECT pc_search_tablefield('%Charter has been activated%', '%', '%', '%', '%', null); 
-- The above returns all column names  tht contains given text
-- SELECT pc_search_tablefield('%john@hotmail%', '%email%', '%', '%', '%', null); 
-- The above will return all database field names that have the phrase email in the field name and that contain the term john@hotmail
CREATE OR REPLACE FUNCTION pc_search_tablefield(param_search text, param_field_like text, param_table_like text, 
    param_schema_like text, param_datatype_like text, param_max_length integer)
  RETURNS text AS
$$
DECLARE
    result text := '';
    var_match text := '';
    searchsql text := '';
BEGIN
    searchsql := array_to_string(ARRAY(SELECT 'SELECT ' || quote_literal(quote_ident(c.table_schema) || '.' 
        || quote_ident(c.table_name) || '.' || quote_ident(c.column_name)) ||
                ' WHERE EXISTS(SELECT ' || quote_ident(c.column_name) || ' FROM ' 
                 || quote_ident(c.table_schema) || '.' || quote_ident(c.table_name) ||
                 ' WHERE ' || CASE WHEN c.data_type IN('character', 'character varying', 'text') THEN 
                    quote_ident(c.column_name) ELSE 'CAST(' || quote_ident(c.column_name) || ' As text) ' END 
                    || ' LIKE ' || quote_literal(param_search) || ') ' As subsql
                FROM information_schema.columns c
                WHERE c.table_schema NOT IN('pg_catalog', 'information_schema') 
                    AND c.table_name LIKE param_table_like 
                    AND c.table_schema LIKE param_schema_like 
                    AND c.column_name LIKE param_field_like
                    AND c.data_type IN('"char"','character', 'character varying', 'integer', 'numeric', 'real', 'text')
                        AND c.data_type LIKE param_datatype_like
                    AND (param_max_length IS NULL OR param_max_length = 0 
                        OR character_maximum_length <= param_max_length) AND 
                        EXISTS(SELECT t.table_name 
                            FROM information_schema.tables t 
                            WHERE t.table_type = 'BASE TABLE' 
                                AND t.table_name = c.table_name AND t.table_schema = c.table_schema)),
                    ' UNION ALL ' || E'\r');
    --do an exists check thru all tables/fields that match field table pattern
    --return those schema.table.fields that contain search pattern information
    RAISE NOTICE '%', searchsql;
    IF searchsql > '' THEN
        FOR var_match IN EXECUTE(searchsql) LOOP 
            IF result > '' THEN
                result := result || ';' || var_match;
            ELSE
                result := var_match;
            END IF;
        END LOOP;
    END IF;         
    RETURN result;
END;$$
  LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;

pgsql 将postgresql导出为CSV

将postgresql导出为CSV

db_to_csv.pgsql
-- http://stackoverflow.com/a/20056883/63650
-- Usage: SELECT db_to_csv('/home/user/dir');
-- this will create one csv file per table, in /home/user/dir/

CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$
declare
  tables RECORD;
  statement TEXT;
begin
  FOR tables IN 
    SELECT (table_schema || '.' || table_name) AS schema_table
    FROM information_schema.tables t INNER JOIN information_schema.schemata s 
    ON s.schema_name = t.table_schema 
    WHERE t.table_schema NOT IN ('pg_catalog', 'information_schema', 'configuration')
    ORDER BY schema_table
  LOOP
    statement := 'COPY ' || tables.schema_table || ' TO ''' || path || '/' || tables.schema_table || '.csv' ||''' DELIMITER '';'' CSV HEADER';
    EXECUTE statement;
  END LOOP;
  return;  
end;
$$ LANGUAGE plpgsql;