PGSQL个人数据库搭载、导入、清洗、查询

PS:如果各位有疑问的话,可以留下微信,我看到会第一时间加的,以后可以多多交流

CREATE TABLE data1(姓 varchar(10),户籍地城市编号 text CHECK (length(户籍地城市编号)=6));
\COPY data1 FROM ‘C:\Users\Administrator\Desktop\数据可视化课程\考核\考核项目2_数据清洗及筛选综合实践\data01.csv’ WITH CSV HEADER ENCODING ‘utf8’
–导入data1数据,设置约束

CREATE TABLE data2(LIKE data1);
\COPY data2 FROM 'C:\Users\Administrator\Desktop\数据可视化课程\考核\考核项目2_数据清洗及筛选综合实践\data02.csv' WITH CSV HEADER ENCODING 'utf8'
--导入data2数据

CREATE TABLE cities(
	行政编码 int,
	省 varchar(10),
	市 varchar(10),
	区县 text,
	lng numeric,
	lat numeric);
\COPY cities FROM 'C:\Users\Administrator\Desktop\数据可视化课程\考核\考核项目2_数据清洗及筛选综合实践\中国行政代码对照表.csv' WITH CSV HEADER ENCODING 'utf8'
--导入cities数据

SELECT * FROM data1 WHERE
	SUBSTRING(户籍地城市编号,1,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,2,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,3,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,4,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,5,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,6,1) NOT IN ('1','2','3','4','5','6','7','8','9','0');
--查看data1问题数据

SELECT * FROM data2 WHERE
	SUBSTRING(户籍地城市编号,1,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,2,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,3,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,4,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,5,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,6,1) NOT IN ('1','2','3','4','5','6','7','8','9','0');
--查看data2问题数据

DELETE FROM data1 WHERE
	SUBSTRING(户籍地城市编号,1,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,2,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,3,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,4,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,5,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,6,1) NOT IN ('1','2','3','4','5','6','7','8','9','0');
--删除data1问题数据	

DELETE FROM data2 WHERE
	SUBSTRING(户籍地城市编号,1,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,2,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,3,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,4,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,5,1) NOT IN ('1','2','3','4','5','6','7','8','9','0') OR
	SUBSTRING(户籍地城市编号,6,1) NOT IN ('1','2','3','4','5','6','7','8','9','0');
--删除data2问题数据	

ALTER TABLE data1 DROP CONSTRAINT data1_户籍地城市编号_check;
--删除约束
ALTER TABLE data1 ALTER COLUMN 户籍地城市编号 TYPE int USING(户籍地城市编号::int);
ALTER TABLE data2 ALTER COLUMN 户籍地城市编号 TYPE int USING(户籍地城市编号::int);
--修改两个表内户籍地城市编号的字符类型


CREATE TABLE data AS
	SELECT * FROM data1 UNION ALL SELECT * FROM data2; 
--合并data1和data2为data

CREATE TABLE result_data AS
	SELECT a.姓,a.户籍地城市编号,b.省,b.市,b.区县,b.lng,b.lat 
	FROM data a INNER JOIN cities b
	ON a.户籍地城市编号 = b.行政编码;
--连接data和cities为result_data

SELECT 姓,COUNT(姓),
	CAST(COUNT(姓) AS numeric)/ (SELECT COUNT(姓) FROM result_data) AS 姓氏占比
	FROM result_data GROUP BY 姓 ORDER BY COUNT(姓) DESC LIMIT 20;
--转换COUNT姓的格式后求出占比
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
导入数据pgsql数据库,你可以使用pg_restore工具。首先,你需要使用pg_dump命令导出整个数据库或者指定的表。例如,使用以下命令导出整个数据库pg_dump -h 数据库ip -U 用户名 数据库名 > 路径 例如: pg_dump -h 127.0.0.1 -U sysdba data_center > /data/data_center.sql 这将把整个数据库导出到指定的路径。 然后,你可以使用pg_restore命令导入数据。例如,使用以下命令导入整个数据库pg_restore -h 数据库ip -U 用户名 -d 数据库名 路径 例如: pg_restore -h 127.0.0.1 -U sysdba -d data_center /data/data_center.sql 这将把导出的数据文件导入到指定的数据库中。 如果你只想导入指定的表,你可以使用以下命令导出指定的表: pg_dump -h 数据库ip -U 用户名 数据库名 -t 表名 > 路径 例如: pg_dump -h 127.0.0.1 -U sysdba data_center -t book > /data/book.sql 这将只导出指定的表。 然后,你可以使用pg_restore命令导入指定的表: pg_restore -h 数据库ip -U 用户名 -d 数据库名 路径 例如: pg_restore -h 127.0.0.1 -U sysdba -d data_center /data/book.sql 这将把导出的表数据文件导入到指定的数据库中。 #### 引用[.reference_title] - *1* *2* [pgsql数据库实现导入导出](https://blog.csdn.net/qq_44760975/article/details/125088452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [POSTGRESQL 数据库导入导出](https://blog.csdn.net/justlpf/article/details/91789787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值