PostgreSQL CSV格式日志导入数据库
PostgreSQL 的日志可以配置成 csv 格式,csv 格式的日志能够像 excel 文件一样作为电子表格打开,也可以导入到数据库表中,使用 SQL 语句做进一步的处理和分析,比如相同 SQL 去重、分组聚合、执行时间过滤、SQL类型过滤(select/insert/update/delele)等。
原文地址:
https://www.mytecdb.com/blogDetail.php?id=238
postgresql.conf 配置如下:
- log_directory = 'pg_log'
- log_destination ='csvlog'
- logging_collector = on
- log_min_messages = error
日志表结构:
CREATE TABLE postgres_log ( log_time timestamp(3) with time zone, user_name text, database_name text, process_id integer, connection_from text, session_id text, session_line_num bigint, command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, error_severity text, sql_state_code text, message text, detail text, hint text, internal_query text, internal_query_pos integer, context text, query text, query_pos integer, location text, application_name text, backend_type text, PRIMARY KEY (session_id, session_line_num) );
注意:pg 的日志版本与日志表的表结构版本要一致,如果日志是 pg 13 产生的,而 postgres_log 表的表结构是 pg12 的,则导入日志会报错,字段数量或者类型不兼容。
导入到数据库:
COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
为了演示 csv 日志导入数据库,可以设置 log_statement=all,在日志中记录所有 SQL 语句,将日志导入到数据库中,进行 SQL 分析。
参考资料:
文章评论