【发布时间】:2016-03-27 16:34:22
【问题描述】:
我已启用登录 postgres。它以 CSV 格式登录。第九列是实际执行的查询。我想运行cut 命令来提取第 9 列,但问题是查询中的逗号和换行符会破坏解析器。有没有办法改变分隔符和换行符?
【问题讨论】:
标签: bash postgresql csv cut
我已启用登录 postgres。它以 CSV 格式登录。第九列是实际执行的查询。我想运行cut 命令来提取第 9 列,但问题是查询中的逗号和换行符会破坏解析器。有没有办法改变分隔符和换行符?
【问题讨论】:
标签: bash postgresql csv cut
正如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
【讨论】: