gpt4 book ai didi

bash - 在 Postgres 日志记录机制中更改定界符和换行符

转载 作者:行者123 更新时间:2023-11-29 13:25:39 25 4
gpt4 key购买 nike

我在 postgres 中启用了日志记录。它记录在 CSV 中。第九列是实际执行的查询。我想运行 cut 命令来提取第 9 列,但问题是查询中的逗号和换行符会破坏解析器。有什么办法可以改变分隔符和换行符吗?

最佳答案

PostgreSQL Manual 中的建议你可以使用 postgres 来解析它自己的日志:

  • 创建临时表;
  • 将日志文件导入其中;
  • 选择所需数据。

这是一个简单的 bash 脚本,可以自动执行该过程。

#!/usr/bin/env bash

psql -t << EOF
CREATE TEMPORARY 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,
PRIMARY KEY (session_id, session_line_num)
);

COPY postgres_log FROM '$1' WITH csv;

SELECT query from postgres_log;
EOF

您可以将其运行为:./fetch-queries.sh/full/path/to/logfile.csv

关于bash - 在 Postgres 日志记录机制中更改定界符和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34398442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com