k8s命令行方式导入大量postgres数据
postgres数据库中有几百万条数据,由于使用客户端导入时候,总是出现内存不足问题,故可使用命令行方式导入。
但需要先进入k8s,刚才做了测试,已经实践成功。主要命令如下,供参考:
查询ns:
kubectl get namespaces
查询pod:
kubectl get pod -n hao-management-dev
进入pod:
kubectl exec -it hao-mgr-postgres-dev-5464859cdd-4htcs -n hao-management-dev -it /bin/sh
查询实例k8s_container:
docker ps| grep hao-mgr-postgres-dev-5464859cdd-4htcs
将文件拷贝:
docker cp /root/hao_postgresql/tb_ttm_data_202311031025.sql 71f07ac26dc6:/
再次进入pod:
kubectl exec -it hao-mgr-postgres-dev-5464859cdd-4htcs -n hao-management-dev -it
连数据库:
进入postgres:
psql -h {k8s内网虚拟IP} -p 5432 -U postgres
/root/hao_postgresql/tb_ttm_data_202311031025.sql
postgresql命令:
1. 建立数据库连接:
接入PostgreSQL数据库: psql -h IP地址 -p 端口 -U 数据库名
之后会要求输入数据库密码
2. 访问数据库
(1)列举数据库:\l
(2)选择数据库:\c 数据库名
(3)查看该某个库中的所有表:\dt
(4)切换数据库:\c interface
(5)查看某个库中的某个表结构:\d 表名
(6)查看某个库中某个表的记录:select * from apps limit 1;
(7)显示字符集:\encoding
(8)退出psgl:\q
3. 执行文件:
\i /pathA/xxx.sql
本次执行参考命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | k8s命令行方式插入postgres数据 -----------------------------------开发环境 查询ns: kubectl get namespaces 查询pod: kubectl get pod -n hao-mgr-dev 进入pod: kubectl exec -it hao-mgr-postgres-dev-5464859cdd-4htcs -n hao-mgr-dev -it /bin/sh 查询实例k8s_container: docker ps| grep hao-mgr-postgres-dev-5464859cdd-4htcs 将文件拷贝: docker cp /root/hao_postgresql/tb_ttm_data_202311081140.sql 71f07ac26dc6:/ 再次进入pod 进入postgres: psql -h 10.233.71.111 -p 5432 -U postgres /root/hao_postgresql/tb_ttm_data_202311081140.sql -----------------------------------测试环境 查询ns: kubectl get namespaces 查询pod: kubectl get pod -n hao-mgr-test 获取具体pod名称: hao-mgr-postgresql-668b75c54f-f6nsl 进入pod: kubectl exec -it hao-mgr-postgresql-668b75c54f-f6nsl -n hao-mgr-test -it /bin/sh 查询实例k8s_container: docker ps| grep hao-mgr-postgresql-668b75c54f-f6nsl 将文件拷贝: docker cp /root/postgresql/tb_ttm_data_202311081140.sql 75b29b3672d1:/ 再次进入pod kubectl exec -it hao-mgr-postgresql-668b75c54f-f6nsl -n hao-mgr-test -it /bin/sh 进入postgres: psql -h 10.1.18.107 -p 5432 -U postgres /root/postgresql/tb_ttm_data_202311081140.sql 数据库操作: postgres=# \l postgres=# \c xayy postgres=# \i /tb_ttm_data_202311081140.sql postgres=# select * from public .tb_ttm_data; postgres=# delete from public .tb_ttm_data; postgres=# select count (*) from public .tb_ttm_data; |
更多postgres命令参考:
==================================================================================
postgresql数据管理系统使用命令方式有两种:
1. 内部命令,以反斜线开始 \ ,如: \l 显示所有数据库
2. 标准SQL命令,以分号 ; 或 \g 结束,可以使用多行
数据库的关键操作:
1. 启动服务 2. 登录 3. 建立数据库 4. 建立表 5. 插入记录到表中
6. 更新/删除/查询/修改操作 7. 退出 8. 停止服务
在windows7中安装的postgresql默认使用GBK字符集,经常不能使用显示中文的数据表,解决办法:
注意:在windows 7下的postgresql中写操作时要使用GBK,读操作时要用UTF8;
设置字符集为 utf-8 就可以了.
postgres=# \encoding utf-8 // 设置客户端的字元集
postgres=# \encoding // 显示客户端的字元集
postgres=# show client_encoding; // 显示客户端的字元集
postgres=# show server_encoding; // 显示服务器的字元集
启动服务:
net start postgresql-9.5
停止服务:
net stop postgresql-9.5
获取命令帮助:
c:\> psql --help
登录( 注意: postgres 是默认用户即管理员 ):
路径 psql -h 服务器 -U 用户名 -d 数据库 -p 端口地址 // -U 是大写
C:\> psql -h localhost -U postgres -p 5432 // 默认打开postgres数据库
C:\> psql -h 127.0.0.1 -U postgres -d fengdos -p 5432 // 打开fengdos数据库
C:\> psql -U postgres // 快速登录(全部使用默认设置)
// 使用某些有密码的用户的情况下, 会提示输入密码.
用户 postgres 的口令: ILoveYou // 输入时不会显示任何字符
// 成功后显示:
psql (9.5.3)
输入 "help" 来获取帮助信息.
// 进入postgresql数据库系统提示符状态, ******=# 中=#前面为当前使用的数据库
postgres=# help // 获取系统帮助,显示如下:
---------------------------------------------------------
您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面
键入:\copyright 显示发行条款
\h 显示 SQL 命令的说明
\? 显示 pgsql 命令的说明 (pgsql内部命令)
\g 或者以分号(;)结尾以执行查询
\q 退出注: 数据库名称区分大小写的。
---------------------------------------------------------
postgres=# \help // 获取SQL命令的帮助,同 \h
postgres=# \quit // 退出,同 \q
postgres=# \password dlf // 重新设置用户dlf的密码,然后需要 \q退出后才生效
c:\>psql exampledb < user.sql // 将user.sql文件导入到exampled数据库中
postgres=# \h select // 精细显示SQL命令中的select命令的使用方法
postgres=# \l // 显示所有数据库
postgres=# \dt // 显示当前数据库中的所有表
postgres=# \d [table_name] // 显示当前数据库的指定表的表结构
postgres=# \c [database_name] // 切换到指定数据库,相当于use
postgres=# \du // 显示所有用户
postgres=# \conninfo // 显示当前数据库和连接信息
postgres=# \e // 进入记事本sql脚本编辑状态(输入批命令后关闭将自动在命令行中执行)
postgres=# \di // 查看索引(要建立关联)
postgres=# \prompt [文本] 名称 // 提示用户设定内部变数
postgres=# \encoding [字元编码名称] // 显示或设定用户端字元编码
*可以将存储过程写在文本文件中aaa.sql,然后在psql状态下:
postgres=# \i aaa.sql // 将aaa.sql导入(到当前数据库)
postgres=# \df // 查看所有存储过程(函数)
postgres=# \df+ name // 查看某一存储过程
postgres=# select version(); // 获取版本信息
postgres=# select usename from pg_user; // 获取系统用户信息
postgres=# drop User 用户名 // 删除用户
其它SQL命令通用如(标准化SQL语句):
*创建数据库:
create database [数据库名];
*删除数据库:
drop database [数据库名];
*创建表:
create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);
*在表中插入数据:
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
*显示表内容:
select * from student;
*重命名一个表:
alter table [表名A] rename to [表名B];
*删除一个表:
drop table [表名];
*在已有的表里添加字段:
alter table [表名] add column [字段名] [类型];
*删除表中的字段:
alter table [表名] drop column [字段名];
*重命名一个字段:
alter table [表名] rename column [字段名A] to [字段名B];
*给一个字段设置缺省值:
alter table [表名] alter column [字段名] set default [新的默认值];
*去除缺省值:
alter table [表名] alter column [字段名] drop default;
*修改表中的某行某列的数据:
update [表名] set [目标字段名]=[目标值] where [该行特征];
*删除表中某行数据:
delete from [表名] where [该行特征];
delete from [表名]; // 删空整个表
*可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:
pg_dump drupal>/opt/Postgresql/backup/1.bak
===================================================================================================
1 2 3 4 | SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename; |
2.列出表中所有的数据
SELECT * FROM someTable;
3.执行外部脚本
#/opt/PostgreSQL/8. 3/bin/psql - Upostgres ;登陆到数据库的控制台界面 postgres= # \i /root/db. sql \i 命令用于执行一个外部的sql脚本文件。
4.导出数据库为外部的脚本
#/opt/PostgreSQL/8. 3/bin/ pg_dump - Upostgres - C - fdb. sql database -C create -f 是导出后的文件名
5.postgresql 插入16进制数
1 | INSERT INTO tableAAA VALUES ( x '0001f' : : integer , '鉴权' , 'Authority' ) |
6.使用 TG_RELNAME 报错ERROR: syntax error at or near "$1" at character
1 2 3 4 5 | [引]http://www.dbmonster.com/Uwe/Forum.aspx/postgresql/2051/TG-RELNAME-problem Perhaps you will get some idea if you read the document: 37. 6. 4. Executing Dynamic Commands 改:执行动态语句 EXECUTE 'INSERT INTO TG_RELNAME VALUES (NEW.start_time , NEW.id , NEW.end_time)' ; |
7. psql 常用命令
1 2 3 4 5 6 7 8 9 10 | a. \c tesdb1 - - 将当前连接的testdb数据库改变成 testdb1 。 b . \q - - 断开与Postgres服务器的连接 c . \l 列出所有数据库的名字 \l+ 列出所有数据库的名字以及字符集编码 d. \d [ 名字] 描述表, 索引, 序列, 或者视图 列出表/索引/序列/视图/系统表 \d{t| i| s| v| S} [ 模式] ( 加 "+" 获取更多信息) - - 列出表/索引/序列/视图/系统表 \d tablename - - 查看表的结构 \dt - - 列出数据库中所有表 |
8.在PostgreSQL中如何删除重复记录
参考:https://www.cnblogs.com/my-blogs-for-everone/p/10226473.html
其他参考:https://www.cnblogs.com/nhdlb/p/14960000.html
https://www.cnblogs.com/yulinlewis/p/10140906.html
psql命令导入
psql -d jdbc -h localhost -p 5432 -U postgres -f /home/sql/test.dmp #-d 数据库名称 #-h ip地址 #-p 端口号 #-U 用户 #-f sql文件路径
pg_dump文件导出
pg_dump -d jdbc -h localhost -p 5432 -U postgres -f /home/sql/test.dmp jdbc
#-d 数据库名称 #-h ip地址 #-p 端口号 #-U 用户 #-f 保存路径 #jdbc 数据库名称
-----------
2条杀毒命令和其他配置参考:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ps aux|grep kworker|grep -v grep | awk '{print $2}' |xargs -i kill -9 {} ps aux|grep kworker|grep -v grep | wc -l ps aux|grep kworker # --------------------------------------- location ^~ /websocket-hao/ { proxy_pass http://hao-mgr-svc; tcp_nodelay on ; proxy_set_header Host $host; proxy_set_header X- Real -IP $remote_addr; proxy_set_header X-Forwarded- For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade" ; } |
tbd

赠人玫瑰
手留余香
我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系!-杨绛先生
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2016-11-03 Git使用