PostgreSQL 常用终端命令总结

📌 连接与基本操作 连接数据库 # 连接到默认数据库(postgres) psql -U username # 连接到指定数据库 psql -U username -d database_name # 连接指定主机和端口 psql -h localhost -p 5432 -U username -d database_name # 直接执行SQL并退出 psql -U username -d database_name -c "SELECT * FROM users;" # 执行SQL文件 psql -U username -d database_name -f script.sql 退出psql \q -- 退出 exit -- 也可用 📋 查看信息命令 数据库相关 -- 列出所有数据库 \l \l+ -- 显示更多信息 -- 查看当前连接的数据库 \c -- 切换数据库 \c database_name -- 查看数据库大小 \l+ -- 包含大小信息 SELECT pg_database_size('database_name'); 表相关 -- 列出所有表 \dt \dt+ -- 显示更多信息(大小、描述等) \dt schema.* -- 查看指定schema下的表 -- 查看表结构 \d table_name \d+ table_name -- 更详细,包含注释 -- 列出所有关系(表、视图、序列等) \d \d+ -- 更详细 其他对象 -- 查看所有schema \dn \dn+ -- 查看所有视图 \dv \dv+ -- 查看所有索引 \di \di+ -- 查看所有序列 \ds \ds+ -- 查看所有函数 \df \df+ \df pattern -- 按模式匹配 -- 查看所有触发器 \dtr -- 查看所有用户/角色 \du \du+ 🔧 交互式命令设置 查询格式化 -- 设置显示模式 \x on -- 扩展显示模式(每字段一行) \x off -- 标准表格模式 \x auto -- 根据屏幕宽度自动切换 -- 设置输出格式 \a -- 切换对齐模式(对齐/不对齐) \pset format aligned -- 对齐格式 \pset format csv -- CSV格式 \pset format html -- HTML格式 \pset format json -- JSON格式 -- 显示查询时间 \timing on \timing off -- 显示执行SQL \echo on \echo off 常用组合设置 -- 生产环境推荐 \pset format aligned \pset border 2 \timing on -- 导出数据推荐 \pset format csv \pset footer off \o output.csv 📁 数据导入导出 导出数据 -- 导出查询结果为CSV \copy (SELECT * FROM table_name) TO 'output.csv' WITH CSV HEADER; -- 导出整个表为CSV \copy table_name TO 'output.csv' WITH CSV HEADER; -- 导出为CSV指定分隔符 \copy table_name TO 'output.csv' WITH CSV DELIMITER '|' HEADER; -- 导出为INSERT语句 \copy table_name TO 'dump.sql' WITH INSERT; -- 导出到文件 \o output.txt SELECT * FROM table_name; \o -- 恢复输出到屏幕 导入数据 -- 从CSV导入 \copy table_name FROM 'data.csv' WITH CSV HEADER; -- 从CSV导入指定列 \copy table_name(col1, col2) FROM 'data.csv' WITH CSV HEADER; -- 执行SQL文件 \i script.sql \include script.sql 🔍 性能调试 -- 查看查询执行计划 EXPLAIN SELECT * FROM users; EXPLAIN ANALYZE SELECT * FROM users; -- 实际执行 -- 查看详细执行计划 EXPLAIN (BUFFERS, ANALYZE, VERBOSE) SELECT * FROM users; -- 查看正在运行的查询 SELECT * FROM pg_stat_activity WHERE state = 'active'; -- 查看慢查询 SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10; -- 分析表(更新统计信息) ANALYZE table_name; ANALYZE; -- 分析所有表 💾 数据库维护 备份与恢复 # 备份数据库(命令行) pg_dump -U username database_name > backup.sql pg_dump -U username -d database_name -Fc > backup.dump # 自定义格式 # 备份特定表 pg_dump -U username -t table_name database_name > table_backup.sql # 恢复数据库 psql -U username -d database_name < backup.sql # 恢复自定义格式 pg_restore -U username -d database_name backup.dump 维护命令 -- 清理并分析数据库 VACUUM; VACUUM ANALYZE; -- 清理并更新统计信息 VACUUM FULL; -- 完全清理(锁表) -- 重建索引 REINDEX INDEX index_name; REINDEX TABLE table_name; REINDEX DATABASE database_name; -- 查看数据库大小 SELECT pg_database_size('database_name'); -- 查看表大小 SELECT pg_total_relation_size('table_name'); -- 查看索引大小 SELECT pg_indexes_size('table_name'); 🛠️ 权限管理 -- 查看权限 \z \dp \dp table_name -- 授予权限 GRANT SELECT ON table_name TO username; GRANT ALL PRIVILEGES ON database_name TO username; -- 撤销权限 REVOKE INSERT ON table_name FROM username; 🎯 实用脚本示例 1. 快速查看表信息和数据量 \dt+ -- 查看所有表及大小 SELECT schemaname, tablename, n_live_tup FROM pg_stat_user_tables ORDER BY n_live_tup DESC; 2. 批量导出表为CSV -- 使用psql变量 \set table_name 'users' \copy :table_name TO '/tmp/:table_name.csv' WITH CSV HEADER; 3. 监控连接数 -- 查看当前连接数 SELECT count(*) FROM pg_stat_activity; -- 查看各数据库连接数 SELECT datname, count(*) FROM pg_stat_activity GROUP BY datname; -- 终止连接 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='database_name'; ⚡ 快速参考卡片 命令 用途 \l 列出所有数据库 \c dbname 切换数据库 \dt 列出所有表 \d tablename 查看表结构 \du 查看用户/角色 \dn 查看schema \df 查看函数 \x 切换扩展显示 \timing 显示执行时间 \copy ... TO 导出数据 \copy ... FROM 导入数据 \i file.sql 执行SQL文件 \q 退出 💡 小技巧 自动补全:在psql中按 Tab 键可以自动补全程SQL命令和对象名 ...

2026年5月3日 · 3 分钟 · Eric

SQLite 常用终端命令总结

📌 基础操作 连接数据库 # 打开/创建数据库 sqlite3 database.db # 打开后立即执行SQL并退出 sqlite3 database.db "SELECT * FROM users;" # 以只读方式打开 sqlite3 database.db -readonly 退出数据库 .exit -- 或 .quit 📋 查看命令(最常用) 查看基本信息 -- 查看所有表 .tables -- 查看表结构 .schema table_name -- 查看所有表的创建语句 .schema -- 查看数据库信息 .database -- 查看当前连接的数据库文件 .databases 查看索引和触发器 -- 查看索引 .indexes table_name -- 查看所有索引 .indexes -- 查看触发器 .schema -- 会显示所有触发器定义 📊 查询数据优化 设置显示格式 -- 以表格形式显示(推荐) .mode table -- 以列对齐方式显示 .mode column -- CSV格式导出 .mode csv -- JSON格式输出 .mode json -- 显示表头 .headers on -- 显示行号 .nullvalue NULL -- 将NULL显示为NULL 常用组合设置 -- 生产环境推荐配置 .headers on .mode column .nullvalue NULL -- 导出数据推荐配置 .mode csv .headers on .output output.csv 🔧 数据导入导出 导出数据 -- 导出到CSV文件 .output result.csv SELECT * FROM table_name; .output stdout -- 恢复输出到屏幕 -- 导出为SQL文件(备份) .output backup.sql .dump .output stdout -- 只导出特定表 .output table_backup.sql .dump table_name .output stdout 导入数据 -- 从CSV导入 .mode csv .import data.csv table_name -- 从SQL文件导入 .read backup.sql -- 在命令行中直接导入 sqlite3 database.db < data.sql 🔍 调试与性能 -- 显示当前设置 .show -- 开启SQL执行计时 .timer on -- 查看查询执行计划 .explain EXPLAIN QUERY PLAN SELECT * FROM table_name; -- 查看最近执行的SQL语句 .history 📁 数据库维护 备份和恢复 -- 备份整个数据库 .backup backup.db -- 备份到文件 .backup main backup.db -- 恢复备份 .restore main backup.db 数据库优化 -- 分析表,更新统计信息 ANALYZE; -- 整理数据库,回收空间 VACUUM; -- 检查数据库完整性 PRAGMA integrity_check; -- 查看数据库大小 PRAGMA page_count; PRAGMA page_size; -- 计算数据库大小(字节) SELECT page_count * page_size FROM pragma_page_count(), pragma_page_size(); 🎯 实用脚本示例 1. 快速查询脚本 #!/bin/bash # 快速查询某个表的行数 sqlite3 database.db "SELECT COUNT(*) FROM table_name;" 2. 批量执行SQL文件 # 执行SQL文件并输出结果到文件 sqlite3 database.db < query.sql > result.txt 3. 交互式查询优化 -- 开启这些设置,查询体验最佳 .headers on .mode column .timer on .echo on -- 显示执行的SQL -- 执行长查询时开启 .timer on .explain SELECT * FROM large_table WHERE condition; 💡 常用操作组合 快速查看表结构 -- 查看所有表 .tables -- 查看特定表详情 .schema table_name -- 预览数据(前10行) SELECT * FROM table_name LIMIT 10; 导出特定表为CSV .mode csv .headers on .output output.csv SELECT * FROM table_name WHERE condition; .output stdout .mode table -- 恢复默认 数据库迁移 -- 导出整个数据库 .output full_backup.sql .dump .output stdout -- 只导出表结构 .output schema_only.sql .schema .output stdout ⚡ 快速参考卡片 命令 用途 .tables 列出所有表 .schema 查看表结构 .database 查看数据库信息 .mode [csv|column|table|json] 设置输出格式 .headers on|off 显示/隐藏表头 .output filename 重定向输出到文件 .import file.csv table 导入CSV .dump 导出SQL备份 .backup file.db 创建完整备份 .timer on 显示执行时间 .exit 退出 这些命令基本覆盖了日常开发中90%的SQLite使用场景。遇到复杂查询时,先用 .explain 分析查询计划,用 .timer on 测量性能,然后根据需要进行优化。

2026年5月3日 · 2 分钟 · Eric

Mysql 常用命令

创建用户并授权 CREATE USER 'halo'@'%' IDENTIFIED BY 'root@123456'; GRANT ALL PRIVILEGES ON halo.* TO 'halo'@'%'; 授权 grant all privileges on zhangsanDb.* to zhangsan@'%' identified by 'zhangsan'; flush privileges; privilegesCode 表示授予的权限类型,常用的有以下几种类型[1]: all privileges:所有权限。 select:读取权限。 delete:删除权限。 update:更新权限。 create:创建权限。 drop:删除数据库、数据表权限。 dbName.tableName 表示授予权限的具体库或表,常用的有以下几种选项: .:授予该数据库服务器所有数据库的权限。 dbName.*:授予dbName数据库所有表的权限。 dbName.dbTable:授予数据库dbName中dbTable表的权限。 username@host 表示授予的用户以及允许该用户登录的IP地址。其中Host有以下几种类型: localhost:只允许该用户在本地登录,不能远程登录。 %:允许在除本机之外的任何一台机器远程登录。 192.168.52.32:具体的IP表示只允许该用户从特定IP登录。 password 指定该用户登录时的面。 flush privileges 表示刷新权限变更。 查询授权 show grants for 'zhangsan'; 修改密码 update mysql.user set password = password('password1') where user = 'zhangsan' and host = '%'; flush privileges; 删除用户 drop user zhangsan@'%'; 查看修改时区 -- 查看时区 show variables like '%time_zone%'; -- 时区设置为 +8 SET time_zone='+8:00' 修改 my.cnf 文件 ...

2021年8月8日 · 1 分钟 · Eric