关于PostgreSQL的大小写问题
创建表的语法:
serial 类型表示自增,在创建表时,会自动生成一个自增序列,通过维护这个序列,来指定主键自增。序列的命名规则为: 表名_主键_sql 如 test_table_id_seq
DROP TABLE IF EXISTS test_table; CREATE TABLE test_table ( id serial NOT NULL , name varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying, CONSTRAINT "test_table_pkey" PRIMARY KEY ("id") ); COMMENT ON COLUMN test_table.id IS 'id'; COMMENT ON COLUMN test_table.name IS '名称';
创建序列:
CREATE SEQUENCE public.vuln_leakagebase_id_seq AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
设置序列所属用户:
ALTER TABLE public.vuln_leakagebase_id_seq OWNER TO root;
将序列应用到表字段:
ALTER SEQUENCE public.vuln_leakagebase_id_seq OWNED BY public.vuln_leakagebase.id;
创建索引:
CREATE INDEX idx_vuln_id ON public.vuln_leakagebase USING btree (vuln_id, vuln_name, vuln_type, severity);
重置序列起始值为1
alter sequence xxx_id_seq restart with 1
查看当前序列
SELECT nextval('xxx_id_seq ');
重置自增主键
TRUNCATE tableName RESTART IDENTITY;
主键自增的表,初始化数据的时候,如果指定了主键的值,需要将序列重新维护一下。
否则后续新增数据时,会报错主键冲突。
解决方法:
把表对应的序列也初始化一下。
select setval('test_table_id_seq', max(id)) from test_table;
启动数据库:(start、stop、status、restart)
su postgres -c "/topsa/serve/pgsql/bin/pg_ctl -D /topsa/serve/pgsql/data/ -l logfile start"
备份数据库:
切换到pgsql的bin目录下,备份root用户下的ngtopsa库
./pg_dump -U root -d ngtopsa > ngtopsa.sql;
备份指定表
./pg_dump -U root -d ngtopsa -t sys_user > sys_user.sql;
恢复sql文件
./psql -h [127.0.0.1] -U [postgres] -d [dbname] -f [dump.sql/*.dmp]
更多【java-pgsql问题记录】相关视频教程:www.yxfzedu.com