# 将pg日志导入pg数据库的几种方法

news2024/11/23 3:37:00

将pg日志导入pg数据库的几种方法

文章目录

  • 将pg日志导入pg数据库的几种方法
    • 1 方法1:官方方法(fiel_fdw)
      • 1.1 创建file_fdw数据源(在此之前需要安装pg的file_fdw扩展)
      • 1.2 创建外部表并导入数据
    • 2 方法2:用csvsql工具导入
      • 2.1 pg csv log 表头准备
      • 2.2 为 postgresql-2023-04-21_140000.csv 添加表头行(26列)
      • 2.3 根据pg日志文件,输出创建表的SQL语句(用postgresql数据库格式),并用它创建表
      • 2.4 导入数据
    • 3 方法3:用awk方法导入
      • 3.1 根据官方文档创建数据表
      • 3.2 用csv日志文件生成SQL语法文件
      • 3.3 导入SQL文件
    • 4 方法4:最佳实践
      • 4.1 创建表
      • 4.2 添加字段说明(多此一举)
      • 4.3 导入数据
      • 4.4 直接给个脚本吧
    • 5 最后

注意:我这里导入的pg日志是csv格式的,Postgresql 14.x日志的字段是26个,网上很多文章都是23个字段

1 方法1:官方方法(fiel_fdw)

参考:https://www.postgresql.org/docs/14/file-fdw.html

结论:好像只能一次一个文件,如何将多个日志文件导入到一个数据库中?out!

1.1 创建file_fdw数据源(在此之前需要安装pg的file_fdw扩展)

CREATE  SERVER pg_csvlog_fdw   FOREIGN DATA   WRAPPER file_fdw;

1.2 创建外部表并导入数据

CREATE FOREIGN TABLE pg_csvlog_file_fdw (
  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,
  leader_pid integer,
  query_id bigint
) SERVER pg_csvlog_fdw
OPTIONS ( filename '/usr/local/pgsql/data/log/postgresql-2023-04-21_130000.csv', format 'csv' );


#  你看,不能copy,有其他方法吗?我不会
pg_log=# copy  "pg_csvlog_file_fdw"  from  '/usr/local/pgsql/data/log/postgresql-2023-04-21_160000.csv' with csv;
ERROR:  cannot insert into foreign table "pg_csvlog_file_fdw"
  • 查看刚创建的表结构:
pg_log=# \d pg_csvlog_file_fdw 
                                  Foreign table "public.pg_csvlog_file_fdw"
         Column         |            Type             | Collation | Nullable | Default | FDW options 
------------------------+-----------------------------+-----------+----------+---------+-------------
 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                        |           |          |         | 
 leader_pid             | integer                     |           |          |         | 
 query_id               | bigint                      |           |          |         | 
Server: pg_csvlog_fdw
FDW options: (filename '/usr/local/pgsql/data/log/postgresql-2023-04-21_130000.csv', format 'csv')

2 方法2:用csvsql工具导入

参考:csvkit - 处理csv文件的瑞士军刀: https://segmentfault.com/a/1190000009179225

结论:用它创建的表,字段值可能被重新定义,比如transaction_id的值等于0(他会分析多条记录得出),他会把它当成boolean型,并在导入时直接把插入值改为false,与原值0就会不匹配,如果手动校正数据类型为bigint型,也不行,因为导入数据时,他依然会将插入的值改为false,此时导入会出错。

2.1 pg csv log 表头准备

log_time,user_name,database_name,process_id,connection_from,session_id,session_line_num,command_tag,session_start_time,virtual_transaction_id,transaction_id,error_severity,sql_state_code,message,detail,hint,internal_query,internal_query_pos,context,query,query_pos,location,application_name,backend_type,leader_pid,query_id

2.2 为 postgresql-2023-04-21_140000.csv 添加表头行(26列)

sed -i  '1ilog_time,user_name,database_name,process_id,connection_from,session_id,session_line_num,command_tag,session_start_time,virtual_transaction_id,transaction_id,error_severity,sql_state_code,message,detail,hint,internal_query,internal_query_pos,context,query,query_pos,location,application_name,backend_type,leader_pid,query_id
'  postgresql-2023-04-21_140000.csv

2.3 根据pg日志文件,输出创建表的SQL语句(用postgresql数据库格式),并用它创建表

^_^ kevin@TM1701-b38cbc23:~$ csvsql  -i postgresql  --tables pg_csvlog_csvsql  /usr/local/pgsql/data/log/postgresql-2023-04-21_140000.csv
CREATE TABLE pg_csvlog (
    log_time VARCHAR NOT NULL, 
    user_name VARCHAR, 
    database_name VARCHAR, 
    process_id DECIMAL NOT NULL, 
    connection_from VARCHAR, 
    session_id VARCHAR NOT NULL, 
    session_line_num DECIMAL NOT NULL, 
    command_tag VARCHAR, 
    session_start_time VARCHAR NOT NULL, 
    virtual_transaction_id VARCHAR, 
    transaction_id BOOLEAN NOT NULL, 
    error_severity VARCHAR NOT NULL, 
    sql_state_code VARCHAR NOT NULL, 
    message VARCHAR NOT NULL, 
    detail VARCHAR, 
    hint BOOLEAN, 
    internal_query BOOLEAN, 
    internal_query_pos BOOLEAN, 
    context BOOLEAN, 
    query VARCHAR, 
    query_pos BOOLEAN, 
    location BOOLEAN, 
    application_name VARCHAR, 
    backend_type VARCHAR NOT NULL, 
    leader_pid BOOLEAN, 
    query_id BOOLEAN NOT NULL
);

这里有个问题,他把【transaction_id】弄成了boolean型,在下面导入时也转换成boolean型了(true或false,不是原本的0或1),所以修改表结构也没用,讨厌,他本来是int型的,这个与sqlalchemy有关,我又不会弄

2.4 导入数据

csvsql --db postgresql://postgres:POSTGRES@192.168.11.145:5432/pg_log  --tables pg_csvlog_csvsql  --insert  /usr/local/pgsql/data/log/postgresql-2023-04-21_140000.csv  --no-create

可以导入多个日志文件,但每个文件都要重复执行添加表头命令

3 方法3:用awk方法导入

结论:这个方法也是OK的。创建表,用awk生成sql语法文件,然后导入

3.1 根据官方文档创建数据表

CREATE  TABLE  pg_csvlog_awk (
  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,
  leader_pid integer,
  query_id bigint,
  PRIMARY KEY (session_id, session_line_num)
);

3.2 用csv日志文件生成SQL语法文件

awk -F, '{ print "insert into pg_csvlog_awk ( log_time, user_name, database_name, process_id, connection_from, session_id, session_line_num, command_tag, session_start_time, virtual_transaction_id, transaction_id, error_severity, sql_state_code, message, detail, hint, internal_query, internal_query_pos, context, query, query_pos, location, application_name, backend_type, leader_pid, query_id )  values" , "(" "'\''"$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"'\''" ")" ";" }'  /usr/local/pgsql/data/log/postgresql-2023-04-21_140000.csv  > pg_csvlog_awk.sql

\换行容易理解:

awk -F , '{ \
print "insert into pg_csvlog_awk ( \
log_time, user_name, database_name, process_id, connection_from, session_id, session_line_num, command_tag, session_start_time, virtual_transaction_id, transaction_id, error_severity, sql_state_code, message, detail, hint, internal_query, internal_query_pos, context, query, query_pos, location, application_name, backend_type, leader_pid, query_id \
)  values" , "(" \
"'\''"$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"'\''" \
")" ";" \
}'  /usr/local/pgsql/data/log/postgresql-2023-04-21_140000.csv  > pg_csvlog_awk.sql

3.3 导入SQL文件

psql pg_csvlog_awk  < pg_csvlog_awk.sql

4 方法4:最佳实践

根据官方文档手动创建表结构,然后用copy方式导入日志文件

4.1 创建表

CREATE TABLE IF NOT EXISTS  pg_csvlog_shell (
  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,
  leader_pid integer,
  query_id bigint,
  PRIMARY KEY (session_id, session_line_num)
);

4.2 添加字段说明(多此一举)

comment on column  pg_csvlog_shell.log_time           is '日志时间,带毫秒的时间戳';
comment on column  pg_csvlog_shell.user_name          is '当前登录数据库的用户名';
comment on column  pg_csvlog_shell.database_name      is '数据库名';
comment on column  pg_csvlog_shell.process_id         is '进程ID';
comment on column  pg_csvlog_shell.connection_from    is '客户端主机:端口号';
comment on column  pg_csvlog_shell.session_id         is '会话ID 由后台进程启动时间和PID组成';
comment on column  pg_csvlog_shell.session_line_num   is '每个会话的行号,类似history命令';
comment on column  pg_csvlog_shell.command_tag        is '命令标签';
comment on column  pg_csvlog_shell.session_start_time     is '会话开始时间';
comment on column  pg_csvlog_shell.virtual_transaction_id is '虚拟事务ID';
comment on column  pg_csvlog_shell.transaction_id         is '事务ID';
comment on column  pg_csvlog_shell.error_severity     is '错误等级';
comment on column  pg_csvlog_shell.sql_state_code     is 'SQLSTATE 代码';
comment on column  pg_csvlog_shell.message            is '消息 SQL语句';
comment on column  pg_csvlog_shell.detail             is '错误消息详情';
comment on column  pg_csvlog_shell.hint               is '提示';
comment on column  pg_csvlog_shell.internal_query     is '导致错误的内部查询(如果有)';
comment on column  pg_csvlog_shell.internal_query_pos is '错误位置所在的字符计数';
comment on column  pg_csvlog_shell.context            is '错误上下文';
comment on column  pg_csvlog_shell.query              is '导致错误的用户查询(如果有且被log_min_error_statement启用)';
comment on column  pg_csvlog_shell.query_pos          is '错误位置所在的字符计数';
comment on column  pg_csvlog_shell.location           is '在 PostgreSQL 源代码中错误的位置(如果log_error_verbosity被设置为verbose)';
comment on column  pg_csvlog_shell.application_name   is '应用名';
comment on column  pg_csvlog_shell.backend_type       is '后端类型(新加)';
comment on column  pg_csvlog_shell.leader_pid         is 'Leader进程ID(新加)';
comment on column  pg_csvlog_shell.query_id           is '查询ID(新加)';

4.3 导入数据

pg_log=# copy  "pg_csvlog_shell"  from  '/usr/local/pgsql/data/log/postgresql-2023-04-21_160000.csv' with csv;
COPY 1165

4.4 直接给个脚本吧

[postgres@v-192-168-11-145-pg pg]$ cat import_pg_log.sh
#!/bin/bash

echo
echo "用法: $0  <csv日志清单文件>    #-- 默认导入今天所有的日志"
echo

LOG_PATH="/usr/local/pgsql/data/log"
LOG_FILE_LIST="pg_log.list"
LOG_ANALYSE_DB="pg_ana_log"
LOG_ANALYSE_TABLE="pg_csvlog_shell"

TIME=${TIME:-`date +%Y-%m-%dT%H:%M:%S`}
TIME_START=${TIME}
DATE_DAY=`date -d "${TIME}" +%Y%m%d`
LOG_ANALYSE_TABLE="${LOG_ANALYSE_TABLE}_${DATE_DAY}"

if [[ $# == 0 ]]; then
    ls -l ${LOG_PATH}/postgresql-$(date -d "${TIME}" +%Y-%m-%d)_*csv | awk '{print $9}' > ${LOG_FILE_LIST}
else
    LOG_FILE_LIST=$1
fi

echo ""
echo "##################################################"
echo "说明:"
echo "数据库名:${LOG_ANALYSE_DB}"
echo "数据库名:${LOG_ANALYSE_TABLE}"
echo "数据库日志文件路径:${LOG_PATH}"
echo "数据库日志文件清单:"
cat ${LOG_FILE_LIST}
echo ""
read -t 10 -p '按任意键继续......'
echo "##################################################"
echo "创建库表"
/usr/local/pgsql/bin/psql << EOF
    DROP DATABASE  "${LOG_ANALYSE_DB}";
    CREATE DATABASE  "${LOG_ANALYSE_DB}";
    \c  "${LOG_ANALYSE_DB}"
    CREATE TABLE IF NOT EXISTS  "${LOG_ANALYSE_TABLE}" (
      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,
      leader_pid integer,
      query_id bigint,
      PRIMARY KEY (session_id, session_line_num)
    );
    comment on column  ${LOG_ANALYSE_TABLE}.log_time           is '日志时间,带毫秒的时间戳';
    comment on column  ${LOG_ANALYSE_TABLE}.user_name          is '当前登录数据库的用户名';
    comment on column  ${LOG_ANALYSE_TABLE}.database_name      is '数据库名';
    comment on column  ${LOG_ANALYSE_TABLE}.process_id         is '进程ID';
    comment on column  ${LOG_ANALYSE_TABLE}.connection_from    is '客户端主机:端口号';
    comment on column  ${LOG_ANALYSE_TABLE}.session_id         is '会话ID 由后台进程启动时间和PID组成';
    comment on column  ${LOG_ANALYSE_TABLE}.session_line_num   is '每个会话的行号,类似history命令';
    comment on column  ${LOG_ANALYSE_TABLE}.command_tag        is '命令标签';
    comment on column  ${LOG_ANALYSE_TABLE}.session_start_time     is '会话开始时间';
    comment on column  ${LOG_ANALYSE_TABLE}.virtual_transaction_id is '虚拟事务ID';
    comment on column  ${LOG_ANALYSE_TABLE}.transaction_id         is '事务ID';
    comment on column  ${LOG_ANALYSE_TABLE}.error_severity     is '错误等级';
    comment on column  ${LOG_ANALYSE_TABLE}.sql_state_code     is 'SQLSTATE 代码';
    comment on column  ${LOG_ANALYSE_TABLE}.message            is '消息 SQL语句';
    comment on column  ${LOG_ANALYSE_TABLE}.detail             is '错误消息详情';
    comment on column  ${LOG_ANALYSE_TABLE}.hint               is '提示';
    comment on column  ${LOG_ANALYSE_TABLE}.internal_query     is '导致错误的内部查询(如果有)';
    comment on column  ${LOG_ANALYSE_TABLE}.internal_query_pos is '错误位置所在的字符计数';
    comment on column  ${LOG_ANALYSE_TABLE}.context            is '错误上下文';
    comment on column  ${LOG_ANALYSE_TABLE}.query              is '导致错误的用户查询(如果有且被log_min_error_statement启用)';
    comment on column  ${LOG_ANALYSE_TABLE}.query_pos          is '错误位置所在的字符计数';
    comment on column  ${LOG_ANALYSE_TABLE}.location           is '在 PostgreSQL 源代码中错误的位置(如果log_error_verbosity被设置为verbose)';
    comment on column  ${LOG_ANALYSE_TABLE}.application_name   is '应用名';
    comment on column  ${LOG_ANALYSE_TABLE}.backend_type       is '后端类型(新加)';
    comment on column  ${LOG_ANALYSE_TABLE}.leader_pid         is 'Leader进程ID(新加)';
    comment on column  ${LOG_ANALYSE_TABLE}.query_id           is '查询ID(新加)';
    \q
EOF

read -t 20 -p '按任意键继续......'

echo "##################################################"
echo "导入csv"
while read file
do
    echo "----- ${file} -----"
    /usr/local/pgsql/bin/psql << EOF
    \c ${LOG_ANALYSE_DB}
    copy  ${LOG_ANALYSE_TABLE}  from  '${file}'  with csv;
    \q
EOF
done < ${LOG_FILE_LIST}

echo ""
echo "OK !"

5 最后

爱你

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

会议论文与期刊论文的写作差异

AI领域的会议论文和期刊论文在撰写方法上存在一定的差异&#xff0c;读者需要理解这些差异&#xff0c;才能做到有的放矢&#xff0c;提高论文的命中率。如果按照会议论文的风格来写期刊论文&#xff0c;或者按照期刊论文的风格来写会议论文&#xff0c;论文命中的概率将大大降…

服务(第十三篇)lvs(负载均衡器)+nginx(反向代理)+tomcat(后端服务器)+nfs共享

准备6台机器&#xff1a; 192.168.169.10 lvs负载均衡器 192.168.169.20、192.168.169.30 nginx反向代理 192.168.169.40&#xff08;tomcat多实例&#xff09;192.168.169.50&#xff08;tomcat&#xff09; 19.168.169.60&#xff08;nfs共享&#xff09; 实验没啥好说的…

新建项目提交到git指定仓库

新建的项目如何上传到git远程仓库&#xff1a; 1&#xff1a;首先进入需要上传的文件夹&#xff0c;鼠标右键点击Git Bash Here 2&#xff1a;输入git init&#xff0c;初始化git相关配置文件 git init3&#xff1a;输入git remote add origin 你的远程仓库地址&#xff0c;…

收废品小程序的推广策略与实践

随着互联网和移动设备的普及&#xff0c;各种小程序逐渐成为了人们生活中不可或缺的一部分。在这样的背景下&#xff0c;开发一个收废品小程序是一个具有巨大潜力的创意。本文将介绍如何开发一个收废品小程序&#xff0c;并分享一些推广策略和实践经验。 开发一个收废品小程序…

推荐好用的数据库软件sql studio

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言免费功能强大支持数据导入和导出和navicat功能相同 一、sql studio是什么&#xff1f;二、使用步骤1.下载软件2. window版本3.linux 版本配置方式3.如何使用sql…

论文浅尝 | 基于交互模态融合的多模态知识图谱补全

笔记整理&#xff1a;张溢驰&#xff0c;浙江大学硕士&#xff0c;研究方向为多模态知识图谱 链接&#xff1a;https://arxiv.org/abs/2303.10816 动机 多模态知识图谱补全需要将多种模态的信息&#xff08;如图像和文本&#xff09;融入到实体的结构表示中&#xff0c;以此来实…

OpenAI ChatGPT 能取代多少程序员的工作?导致失业吗?

阅读原文&#xff1a;https://bysocket.com/openai-chatgpt-vs-developer/ ChatGPT 能取代多少程序员的工作&#xff1f;导致我们程序员失业吗&#xff1f;这是一个很好的话题&#xff0c;我这里分享下&#xff1a; 一、ChatGPT 是什么&#xff1f;有什么作用 ChatGPT是一种…

操作系统课堂笔记

第一章概述 操作系统&#xff08;Operating System, OS&#xff09;是计算机系统中最重要的系统软件&#xff0c;它统一管理计算机系统的硬件资源与信息资源&#xff0c;控制与调度上层软件的执行并为其提供易于使用的接口。 1.1计算机系统 操作系统在计算机系统中的地位&…

Java学习-MySQL-索引

Java学习-MySQL-索引 索引分类 索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。 1.主键索引&#xff08;Primary Key&#xff09;&#xff0c;唯一标识&#xff0c;不可重复&#xff0c;并且只能有一个字段可以作为主键。 2.唯一索引&#xff08;Uniq…

地热井监测控制系统解决方案

概述 地热井监测控制系统主要是对地热井采水和回灌进行流量、温度、水位&#xff08;压力&#xff09;等参数的实时监测&#xff0c;对地热站现场环境进行实时视频监控。地热井现场和取水井、回灌井安装监测装置&#xff0c;通过无线传输设备将数据实时传输至自然资源局已建中…

【Leetcode -141.环形链表 -2.两数相加】

Leetcode Leetcode -141.环形链表Leetcode -2.两数相加 Leetcode -141.环形链表 题目&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给…

第二届易派客工业品展圆满落幕 3天超7万人次观展

4月15日&#xff0c;第二届易派客工业品展览会在苏州国际博览中心成功闭幕&#xff0c;展会期间共7.4万人次观展。展会以“绿色•智造•融通•赋能”为主题&#xff0c;为参展企业衔接供需、共享商机、共促发展提供平台&#xff0c;推动工业企业数字化转型、致力供应链优化升级…

AntdesignVue 局部全屏后Message、Select 、Modal、Date等组件不显示问题解决方案(最终版)

1、对this.$message.....这种的消息提示组件解决方案如下 在main.js中全局配置消息提示 //单独引用需修改的元素 import { message } from ant-design-vue message.config({maxCount: 1,getContainer:() > document.getElementById(showBigModal) || document.body //父组件…

责任链设计模式知多少

目录 目标 概述 实现 单向设计模式 双向设计模式 目标 熟悉责任链设计模式&#xff0c;了解责任链设计模式的使用场景、具体实现&#xff0c;单链责任链设计模式和双链责任链设计模式的区别。 概述 一、行为设计模式 行为设计模式是设计模式的一种类型。该类型的设计模…

three.js车辆可视化教程-完整0到1

概述 如有不明白的可以加QQ&#xff1a;2354528292&#xff1b;wx: aichitudousien 更多教学视频请访问&#xff1a;https://space.bilibili.com/236087412 详细教学请到上方视频链接访问&#xff0c;总共3个多小时的教学~ Three.js车展系统 搭建开发环境 使用的开发框架是vu…

计算机程序安装及使用须知_kaic

安装及使用须知 1 数据库建模程序的使用 本文件夹中的“PowerDesigner建模”目录下包含三个可运行文件TMS1.cdm&#xff0c;TMS.cdm&#xff0c;TMS.pdm分别为TMS系统的实体关系简图、实体关系图和数据库模型&#xff0c;使用PowerDesigner集成开发环境打开任意一个文件即可运…

第二节 ogre sdk 配置使用

上一节&#xff0c;我们介绍过了ogre源码的编译学习&#xff0c;在实际项目中&#xff0c;我们并不需要如此复杂的编译安装过程&#xff0c;可以直接使用官网提供的sdk库进行项目环境配置。下面简单介绍下配置过程。 一 OgreSDK下载 https://dl.cloudsmith.io/public/ogrecav…

Know-Evolve: Deep Temporal Reasoning for Dynamic Knowledge Graphs

Know-Evolve: Deep Temporal Reasoning for Dynamic Knowledge Graphs Rakshit Trivedi 1 Hanjun Dai 1 Yichen Wang 1 Le Song 1 知识背景 Temporal Knowledge Graph : facts occur,recur or evolve over time in these graphs,and each edge in the graphs have temporal …

FPGA基于XDMA实现PCIE X8视频采集HDMI输出 提供工程源码和QT上位机程序和技术支持

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xff0c;比起 PC…

【翻译一下官方文档】之uniapp的数据缓存

uni.setStorage(OBJECT) setstorage | uni-app官网 uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中&#xff0c;会覆盖掉原来该 key 对应的内容&#xff0c;这是一个异步接口。 参数名类型必填说明keyString是本地缓存中的指定的 keydataAny是需要存储的内容&am…