feat: 新增工作日志

master
old-tom 3 years ago
parent 0f9cb15225
commit 75b6be6555

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

@ -0,0 +1,15 @@
+ 查询节点入度为1的其他节点
```sql
# view 为标签 name 为节点属性, <--
match (n:view{name: "CRZ_FINANCE_INVEST_PRJ_DETAIL_VW" })<--(b) return n,b
```
+ 查询某个节点入度(其他节点指向该节点)
```
match (n:view{name: 'CRZ_FINANCE_INVEST_PRJ_DETAIL_VW'}) with n, size((n)<-[]-()) as s return s;
```
+ 向上遍历
```cpyher
# 查询与视图CRZ_FINANCE_INVEST_PRJ_DETAIL_VW相关的所有节点及关系,<-,
MATCH (c:view{name:"CRZ_FINANCE_INVEST_PRJ_DETAIL_VW"})<-[r*0..]-(result) return result
MATCH (c:view{name:"DW_INFRASTRUCTURE_INDEX_VW"})<-[r*0..]-(result) return result
```

@ -153,6 +153,29 @@ lsof -i:8080
# 查看文件进程
lsof xxx.txt
```
+ ip
```
ip link show # 显示网络接口信息
ip link set eth0 up # 开启网卡
ip link set eth0 down # 关闭网卡
ip link set eth0 promisc on # 开启网卡的混合模式
ip link set eth0 promisc offi # 关闭网卡的混个模式
ip link set eth0 txqueuelen 1200 # 设置网卡队列长度
ip link set eth0 mtu 1400 # 设置网卡最大传输单元
ip addr show # 显示网卡IP信息
ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址
ip route show # 显示系统路由
ip route add default via 192.168.1.254 # 设置系统默认路由
ip route list # 查看路由信息
ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
ip route add default via 192.168.0.254 dev eth0 # 设置默认网关为192.168.0.254
ip route del 192.168.4.0/24 # 删除192.168.4.0网段的网关
ip route del default # 删除默认路由
ip route delete 192.168.1.0/24 dev eth0 # 删除路由
```
## 2.2 查看网关
```
# 查看gateway
@ -203,6 +226,49 @@ scp local_file remote_host:remote_file
scp -r local_dir remote_host:remote_folder
```
## 2.8 查看网卡
查看当前使用网卡
```
nmcli d
```
修改IP添加DNS
```text
nmcli c m ens33 ipv4.address 192.168.80.10/24 # 修改 IP 地址和子网掩码
nmcli c m ens33 ipv4.method manual # 修改为静态配置,默认是 auto
nmcli c m ens33 ipv4.gateway 192.168.80.2 # 修改默认网关
nmcli c m ens33 ipv4.dns 192.168.80.2 # 修改 DNS
nmcli c m ens33 +ipv4.dns 114.114.114.114 # 添加一个 DNS
nmcli c m ens33 ipv6.method ignored # 将 IPv6 禁用针对CentOS8三个可选项disabled、auto、manual
nmcli c m ens33 connection.autoconnect yes # 开机启动
```
显示连接信息
```
nmcli connection show
nmcli c show
```
## 2.9 安装SSH
```shell
yum -y install openssh openssh-server openssh-clients
systemctl start sshd
systemctl status sshd
```
## 2.10 修改DNS
```
vim /etc/resolv.conf
# 重启网络
systemctl start network.service
```
## 2.11 网络测试
```shell
# 返回0表示正常
wget --spider -T 5 -q -t 2 www.baidu.com | echo $?
```
# 三、权限
## 3.1 用户权限及用户组
Linux/Unix 的文件调用权限分为三级 : 文件所有者Owner、用户组Group、其它用户Other Users
@ -313,6 +379,46 @@ df -h
jsp
```
## 4.9 软链接
将python2.7.9映射为python可以先用whereis python或者which python查找位置
```shell
ln -s /usr/local/python-2.7.9/bin/python /usr/bin/python
```
## 4.10 查看上次登录
```shell
who -b
```
## 4.11 配置定时任务
hadoop任务可能不会执行因为crontab的path和系统path不一致找到hadoop命令。如果出现找不到命令情况请添加cron path
```shell
root 用户
vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
20 04 * * * root reboot
# 加载配置
crontab /etc/crontab
# 重启crontab服务
systemctl restart crond.service
```
# 五、vim
![[vi-vim-cheat-sheet-sch.gif]]
@ -329,3 +435,15 @@ jsp
| 修改文件format | :set fileformat=unix |
| 删除 | dd 删除当前行 |
| 方向键 | h左 j:下 k上 l右 |
# 六、环境变量
## 6.1 java 环境变量
```shell
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source ~/.bashrc
# 验证
java -version
echo $JAVA_HOME
```

@ -0,0 +1,159 @@
# 一、元数据
## 1.1 存储过程
+ 查看所有存储过程
```sql
select distinct name From user_source where type = 'PROCEDURE'
```
+ 查看存储过程语句
```sql
SELECT text
FROM user_source
WHERE NAME = 'EXECUTE_JOB_FINANCE_SURVEY'
ORDER BY line
```
## 1.2 表
+ 查看所有表
```sql
# 查询当前用户
select * from user_tab_comments where table_type='TABLE';
# 查询所有用户,当前用户必须有sysdba权限
select * from all_tab_comments
```
+ 查看表所有字段
```sql
SELECT
COLUMN_NAME,
DATA_TYPE
FROM
user_tab_columns
WHERE
table_name = 'DW_INFRASTRUCTURE_SURVEY'
ORDER BY
COLUMN_ID ASC;
```
+ 查看具体字段
```sql
SELECT
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH,
NULLABLE,
DEFAULT_LENGTH,
DATA_DEFAULT
FROM
user_tab_columns
WHERE
table_name = 'DW_INFRASTRUCTURE_SURVEY'
AND COLUMN_NAME = 'STATISTICAL_TIME'
ORDER BY
COLUMN_ID ASC;
```
+ 查看字段及注释
```sql
SELECT
b.COLUMN_NAME,
a.COMMENTS,
case when DATA_PRECISION is null and DATA_SCALE=0 and DATA_TYPE='NUMBER' then 'NUMBER(38,0)' when
DATA_PRECISION is not null and DATA_SCALE>0 then 'NUMBER('||DATA_PRECISION||','||DATA_SCALE||')' when
DATA_TYPE<>'DATE' then DATA_TYPE||'('||DATA_LENGTH||')' else DATA_TYPE end as DATA_TYPE_,
b.NULLABLE,
b.DATA_LENGTH,
b.DEFAULT_LENGTH,
b.DATA_DEFAULT,
DATA_PRECISION,
DATA_SCALE,
b.COLUMN_ID,
b.DATA_TYPE
FROM
user_col_comments a
LEFT JOIN user_tab_columns b ON a.table_name = b.table_name
AND a.COLUMN_NAME = b.COLUMN_NAME
WHERE
a.table_name = 'OA_VEHICLE_OIL_CHARGE'
ORDER BY
b.COLUMN_ID ASC
```
+ 修改表备注
```
# 表备注
Comment on table DW_RE_PROGRESS_DETAIL is '项目进度-进度明细';
# 字段备注
comment on column Student.id is '学生id';
comment on column Student.name is '学生姓名';
```
## 1.3 视图
+ 查询当前用户所有视图
```sql
select * from user_tab_comments where table_type='VIEW'
```
+ 视图创建语句
```sql
select text from all_views where view_name='DW_SAFETY_RISK_LARG_QS_VW'
```
# 二、常用函数
## 2.1 行转列、列转行
+ pivot
```sql
--行转列
select *
from SalesList pivot(
max(salesNum) for shangPin in ( --shangPin 即要转成列的字段
'上衣' as 上衣, --max(salesNum) 此处必须为聚合函数,
'裤子' as 裤子, --in () 对要转成列的每一个值指定一个列名
'袜子' as 袜子,
'帽子' as 帽子
)
)
where 1 = 1; --这里可以写查询条件没有可以直接不要where
```
```sql
with hsb_stat as (select count(1) as num,'已完成重大污染物识别与评价项目' as item from SU_CHECK_ENVWATER_IMPL where STAT_ITEM_ID=110 and FINISH_STATUS=1 and PROJECT_ID=#{project_id}
union
select count(1) as num,'已完成环水保检测项目' as item from SU_CHECK_ENVWATER_IMPL where STAT_ITEM_ID=111 and FINISH_STATUS=1 and PROJECT_ID=#{project_id}
union
select count(1) as num,'已完成“三同时”落实情况项目' as item from SU_CHECK_ENVWATER_IMPL where STAT_ITEM_ID=112 and FINISH_STATUS=1 and PROJECT_ID=#{project_id}
union
select count(1) as num,'已完成环水保验收项目' as item from SU_CHECK_ENVWATER_IMPL where STAT_ITEM_ID=113 and FINISH_STATUS=1 and PROJECT_ID=#{project_id}
union
select nvl(sum(CHECK_COUNT),0) as num,'检查次数' as item from SU_CHECK_ENVWATER_IMPL where PROJECT_ID=#{project_id}
union
select nvl(sum(CHECK_ISSUE_COUNT),0) as num,'发现问题数' as item from SU_CHECK_ENVWATER_IMPL where PROJECT_ID=#{project_id}
union
select nvl(sum(RECTIFY_ISSUE_COUNT),0) as num,'整改完成' as item from SU_CHECK_ENVWATER_IMPL where PROJECT_ID=#{project_id})
-- 重点
select * from hsb_stat pivot(max(num) for item in (
'已完成“三同时”落实情况项目' as santongshi,
'已完成环水保检测项目' as hsjc
'已完成环水保验收项目' as hsys,
'已完成重大污染物识别与评价项目' as zdwrw,
'检查次数' as jccs,
'整改完成' as zgwc,
'发现问题数' as fxwts
))
```
+ merge into 合并
```sql
MERGE INTO t1
USING (SELECT id,name FROM t2) t2
ON ( t1.id=t2.id)
WHEN MATCHED THEN
UPDATE SET T1.name= t2.name
WHEN NOT MATCHED THEN
INSERT (id,name) VALUES (t2.id,t2.name);
# 结合with
MERGE INTO #TEMP1 A
USING (
WITH SUMORDER AS
(SELECT PRODUCTID, SUM(AMOUNT) TOTAL
FROM ORDER GROUP BY PRODUCTID)
SELECT * FROM SUMORDER
) B ON (A.PRODUCTID = B.PRODUCTID)
WHEN MATCHED THEN UPDATE SET A.TOTAL = B.TOTAL;
```

@ -0,0 +1,147 @@
# 一、统计
## 1.1 数据量统计
```sql
exec sp_spaceused 表名;
```
## 1.2 批量统计
本质是循环
```sql
exec sp_MSforeachtable "exec sp_spaceused '?'"
```
# 二、分页
## 2.1 topN
查看前5条
```sql
select TOP 5 *from T_ProductMain
```
## 2.2 分页查询
要查询上述结果中第 7 条到第 9 条记录
```sql
select top 3 id from tablename
where id not in (
  select top 6 id from tablename
)
```
m-1=6m=7
```sql
select top (n-m+1) id from tablename
where id not in (
  select top m-1 id from tablename
)
```
通过行号分页
```sql
SELECT * FROM
(
SELECT ROW_NUMBER()over(order by getdate()) AS rownumber,* from T_ProductMain
) AS #a
WHERE #a.rownumber>=1 AND #a.rownumber<=5
```
sqlserver 2012及以上版本支持
```sql
SELECT * FROM T_AttrPart
ORDER BY PartNo offset 0 ROWS FETCH NEXT 10 ROWS ONLY
```
# 三、元数据
## 3.1 查看所有表名
```sql
select top 10000
ROW_NUMBER() OVER (ORDER BY a.name) AS No,
a.name AS 表名,
CONVERT(NVARCHAR(100),isnull(g.[value],'-')) AS 说明
from
sys.tables a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = 0);
```
## 3.2 查看字段及类型
```sql
select column_name name,data_type type
from information_schema.columns
where table_name = 'T_AltAffix'
```
## 3.3 查看数据库版本
```sql
SELECT SERVERPROPERTY('productversion') as version_code, SERVERPROPERTY ('productlevel') as version_level, SERVERPROPERTY ('edition') as version_type
```
## 3.4 系统自带
+ 存储过程
```sql
dt_addtosourcecontrol
dt_addtosourcecontrol_u
dt_adduserobject
dt_adduserobject_vcs
dt_checkinobject
dt_checkinobject_u
dt_checkoutobject
dt_checkoutobject_u
dt_droppropertiesbyid
dt_dropuserobjectbyid
dt_generateansiname
dt_getobjwithprop
dt_getobjwithprop_u
dt_getpropertiesbyid
dt_getpropertiesbyid_u
dt_getpropertiesbyid_vcs
dt_getpropertiesbyid_vcs_u
dt_isundersourcecontrol
dt_isundersourcecontrol_u
dt_removefromsourcecontrol
dt_setpropertybyid
dt_setpropertybyid_u
dt_validateloginparams
dt_validateloginparams_u
dt_vcsenabled
dt_verstamp006
dt_verstamp007
dt_whocheckedout
dt_whocheckedout_u
```
## 3.5 查看字符集
```sql
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage');
```
| 字符集编码 | 类型 |
| ---------- | --------------- |
| 936 | 简体中文GBK |
| 950 | 繁体中文BIG5 |
| 437 | 美国/加拿大英语 |
| 932 | 日文 |
| 949 | 韩文 |
| 866 | 俄文 |
| 65001 | unicode UFT-8 |
## 3.6 查看数据占用大小
```sql
SELECT a.name [文件名称] ,cast(a.[size]*1.0/128 as decimal(12,1)) AS [文件设置大小(MB)] ,
CAST( fileproperty(s.name,'SpaceUsed')/(8*16.0) AS DECIMAL(12,1)) AS [文件所占空间(MB)] ,
CAST( (fileproperty(s.name,'SpaceUsed')/(8*16.0))/(s.size/(8*16.0))*100.0 AS DECIMAL(12,1)) AS [所占空间率%] ,
CASE WHEN A.growth =0 THEN '文件大小固定,不会增长' ELSE '文件将自动增长' end [增长模式] ,CASE WHEN A.growth > 0 AND is_percent_growth = 0
THEN '增量为固定大小' WHEN A.growth > 0 AND is_percent_growth = 1 THEN '增量将用整数百分比表示' ELSE '文件大小固定,不会增长' END AS [增量模式] ,
CASE WHEN A.growth > 0 AND is_percent_growth = 0 THEN cast(cast(a.growth*1.0/128as decimal(12,0)) AS VARCHAR)+'MB'
WHEN A.growth > 0 AND is_percent_growth = 1 THEN cast(cast(a.growth AS decimal(12,0)) AS VARCHAR)+'%' ELSE '文件大小固定,不会增长' end AS [增长值(%或MB)] ,
a.physical_name AS [文件所在目录] ,a.type_desc AS [文件类型]
FROM sys.database_files a
INNER JOIN sys.sysfiles AS s ON a.[file_id]=s.fileid
LEFT JOIN sys.dm_db_file_space_usage b ON a.[file_id]=b.[file_id] ORDER BY a.[type]
```
# 四、视图
+ 索引视图
```sql
# 创建索引视图,必须指定列名
create view vwi_T_AttrPart WITH SCHEMABINDING as
SELECT ROW_NUMBER()over(order by getdate()) AS rownumber,PartNo ,ParentNO ,PartName ,SectNo ,OrderNo ,SessionCode ,IsNew ,AltMainNo ,PayPartID ,EngineerTypeID1 ,EngineerTypeID2 ,EngineerTypeID3 ,EngineerID ,SectDetailID ,StartPile ,EndPile ,CenterPile ,Mileage ,PartTypeID ,PartRemarks from dbo.T_AttrPart
# 添加索引列(报错:不能在索引或统计信息中使用 视图'dbo.vwi_T_AttrPart' 的列 'rownumber',也不能将该列用作分区键,因为它不具有确定性)
CREATE UNIQUE CLUSTERED INDEX
ucidx_rownumber
ON dbo.vwi_T_AttrPart(rownumber);
```

@ -125,6 +125,8 @@ docker exec -i -t mynginx /bin/bash
通过 exec 命令对指定的容器执行 bash:
```
docker exec -it 9df70f9a0714 /bin/bash
# root 权限进入
docker exec -it -u root 9df70f9a0714 bash
```
# 二、容器rootfs命令

@ -0,0 +1 @@
[Gobrs-Async](https://async.sizegang.cn/)

@ -0,0 +1,5 @@
# 一、 镜像加速
```shell
# 添加 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install 'acryl-datahub[oracle]' -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
```

@ -1,107 +0,0 @@
* 显示前N个
```
ll -lht|head -n 20
```
* 压缩命令过长
```shell
find ./ -name '*' -print |zip files -@
```
* 合并文件
```sql
cat *.txt > target.txt
```
* 配置定时任务
```sql
root 用户
vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
20 04 * * * root reboot
# 加载配置
crontab /etc/crontab
# 重启crontab服务
systemctl restart crond.service
```
* 查看上一次启动
```sql
who -b
```
* 切分文件
```sql
# 按大小切分
split -b 100m xxxx
# 按行切分
split -l xxxx
# 设置拆分后文件名,指定数字后缀
split -b 100m -d xxxx xxxx_part_
```
* 显示文件大小
```sql
du -sh xxxx
```
* grep
```sql
# 高亮查找结果
grep --color "test" catalina.out
# 显示在第几行
grep -n test catalina.out
```
* zip
```shell
# 压缩
zip -r ./xxx.zip ./*
# 解压
unzip xxx.zip
# 查看压缩文件内容
unzip -v xxx.zip
# 从zip中删除xxx.txt文件
zip xxx.zip -d xxx.txt
```
* 软链接
```shell
ln -s 源文件名 软链接文件名
```
* 查看端口占用情况
```shell
# 查看所有
lsof -i
# 查看指定端口
lsof -i:8080
# 查看文件进程
lsof xxx.txt
```

@ -0,0 +1,3 @@
1. 了解计量支付前期数据前期方案及工作,整理方案中存在的问题
2. 整理新版数据前期思路并与董工讨论
3. 编写SqlServer数据量统计代码对旧库数据统计并输出文档

@ -0,0 +1,10 @@
计划:
- [x] 从网上整理数据迁移方案模板、chatGpt协助
- [x] 梳理SqlServer迁移至oracle可能出现的问题表空间、字符集、字段类型、函数、触发器等
- [ ] 搭建dataX、dataX-web测试环境
- [x] 编写数据迁移方案-技术篇(总体分为技术篇与业务篇)
工作日志:
1. 编写数据迁移方案
共6个模块完成1~3模块
2. 思路验证

@ -0,0 +1,11 @@
计划:
- [ ] 搭建dataX、dataX-web测试环境
- [x] 测试大表range分页方案
- [x] 数据一致性校验工具设计
- [x] 完成第一版数据迁移方案编写
工作日志:
一、数据迁移方案
1. 对分表策略进行测试,分别测试视图、索引视图分表。
2. 完善方案,新增质量要求、决策依据、未来规划模块
3. 虚拟机搭建dataX测试环境

@ -0,0 +1,9 @@
计划:
云南交发省级事权高速公路建设项目综合管理信息平台-
- [x] 筹融资及资金使用SQL修改
- [x] 质量安全SQL修改
工作日志:
1. 勐醒至江城至绿春高速公路--->筹融资及资金使用--->资金到位及投资完成界面查询SQL修复月份重复bug
2. 勐醒至江城至绿春高速公路--->质量安全--->监理检验 修复年份SQL-bug
3. 发现勐醒至江城至绿春高速公路--->筹融资及资金使用--->资金到位与投资完成情况对比-->年度数据为0 bug经排查后端接口正常已提交前端处理。

@ -0,0 +1,10 @@
计划:
一、计量支付、投融资系统数据迁移
- [ ] 梳理任务清单
- [ ] 填写风险评估
- [ ] 数据探查工具开发
工作日志:
1. 数据迁移方案评审(参与人:公司领导)
2. 数据探查工具开发
3. 协助罗丹排查源表及汇总表同步问题,发现存储过程执行异常,但是无法排查异常原因。

@ -0,0 +1,45 @@
计划:
一、事权
- [ ] 梳理事权项目涉及到的表、视图、存储过程并整理出完整的数据模型(方式方法不限)
- [x] 安装datahub对库进行扫描---->元数据、数据血缘、数据流向
- [ ] 整理事权高速公路建设项目综合管理信息平台查询SQL--->数据血缘
- [ ] 修改存储过程逻辑1.将删除后插入修改为:状态位修改插入或查询插入到临时表再插入新数据 2.增加日志表记录执行过程
工作日志:
1. WSL-docker 搭建datahub对事权库进行扫描
2. 对照事权-->数据填报采集系统及数据库设计文档梳理填报用到的表
3. 使用pdman对事权库逆向出ODS表89张与数据库设计文档提供的67张有差异其余22张表用途不明
4. 清除合同管理、征地拆迁测试数据
```sql
-- 合同管理
-- 合同签订情况总览、合同支付情况
select * from DW_CONTRACT where rownum<=10;
create table DW_CONTRACT_bak_zr_20230403 as select * from DW_CONTRACT;
-- truncate table DW_CONTRACT;
-- 征地拆迁
-- 项目征地拆迁进度及费用支付情况 DW_LAND_DETAIL、DW_MAIN_DIMENSION
select * from DW_LAND_DETAIL where rownum<=10;
create table DW_LAND_DETAIL_bak_zr_20230403 as select * from DW_LAND_DETAIL;
-- truncate table DW_LAND_DETAIL;
select * from DW_MAIN_DIMENSION where rownum<=10;
create table DW_MAIN_DIMENSION_bak_zr_20230403 as select * from DW_MAIN_DIMENSION;
-- truncate table DW_MAIN_DIMENSION;
-- 工程变更指定project_ID
delete from dw_change where ID_ in (
select ID_ from dw_change where MAIN_ID_ in (
select id from dw_main_dimension where PROJECT_ID in (600000000000000138))
)
-- 工程变更台账
delete from ods_change_account where PROJECT_ID in (600000000000000138)
```
5. 手动调用存储过程P_DW_MAIN_DIMENSION、P_DW_PROJECT_PROGRESS_LIST补充dw_main_dimension、dw_progress_complete表数据

@ -0,0 +1,12 @@
问题:
一、通过逆向分析事权数据库得到89张ODS表已知70张未知19张如何分析出未知表的用途与数据流
方法1. 分析填报接口SQL 2. 分析视图 3. 将未知表整理出来交给其他人(熟悉业务)
二、如何描述表与表、表与视图、视图与视图、表与存储过程、视图与存储过程的关系及数据流向?
要求1. 字段级别的血缘(自动分析、手动录入) 2. 支持搜索
计划:
- [x] 事权ODS表梳理及建模共89张已知70张
- [ ] 分析数据库视图及存储过程梳理数据血缘关系分析剩余22张ODS表用途
- [ ] 梳理填报接口并整理数据插入逻辑及目标表ODS

@ -0,0 +1,8 @@
计划:
事权DW表重写
- [ ] 编写代码递归扫描存储过程找出需要处理的DW表并形成台账
- [ ] 根据扫描结果绘制数据血缘关系图(表级别)
- [ ] 梳理前端查询接口反推DW表-->反推存储过程-->ODS表--->视图替换
工作日志:
1. 梳理事权统计前端接口并根据接口回溯代码代码回溯DW表DW表回溯存储过程
2. 协助罗丹搭建代码SpringCloud环境

@ -0,0 +1,9 @@
计划:
上午:
- [x] 根据已梳理ODS表使用pdManer工具绘制ER图
- [x] 整理ODS表重建视图思路
下午:
- [ ] 数据血缘工具功能点及流程图
- [ ] 测试Neo4j 节点查询,学习并整理常用查询语句
工作日志:

@ -0,0 +1,18 @@
计划:
一、数据迁移
- [x] 梳理完整任务计划表并进行时间评估(核对新旧系统表结构除外)
二、数据血缘
- [ ] 测试数据血缘管理,完成元数据提取模块
工作日志:
数据迁移:
1. 梳理完整任务计划表并进行时间评估
2. 新旧表字段核对思路:
以计量支付为例:
从系统功能反推数据流
1、拆分新版计量支付功能点
2、通过debug回溯功能点与新表对应关系
3、人工分析旧表与新表字段关系
4、搭建测试环境模拟从旧表抽数到新表
5、通过步骤1、2梳理的功能与表对应关系进行功能性验证。如果功能不正常需修改步骤4产出脚本。
3. 搭建dataX、dataX-web集群并编写安装维护手册缺少集群配置

@ -0,0 +1,17 @@
计划:
数据迁移
- [x] 在windows server上安装sqlServer数据库并将计量支付历史数据导入
- [x] 新Linux服务器搭建worker节点并完成dataX双节点部署完成后完善ETL安装维护手册
- [ ] 梳理计量支付用户、部门相关表结构
工作日志:
一、数据迁移
1. 同步基投库到1.2 sqlserver
2. 对基投库进行逆向建模
3. 安装dataX执行器并进行测试目前已搭建2节点ETL小集群。ETL集群安装维护文档编写完毕。
二、事权
1. 修改多项目危大工程风险分级管控情况
2. 修改多项目各项目危大工程风险分级管控情况
3. 单项目危大工程风险分级管控情况
4. 单项目月度危大工程风险分级管控情况
上述均新增 已评审危大工程专项方案数、已评审危大工程专项数占比2个字段

@ -0,0 +1,66 @@
数据迁移:
- [ ] 梳理RoadInfoMgrYNJT表结构
工作日志:
一、事权
1. 新增环水保多项目及单项目汇总、详情统计接口共4个
2. 质量安全->风险分级管控->危大工程分级管控情况、各项目危大工程管控情况增加已评审专项、未评审专项统计字段
3. 清理质量安全数据
```sql
-- 物理表
-- 红线问题隐患排查治理情况(过程问题隐患排查)
create table ODS_SAFETY_PROBLEM_RED_DETAIL_bak_20230412 as select * from ODS_SAFETY_PROBLEM_RED_DETAIL;
truncate table ODS_SAFETY_PROBLEM_RED_DETAIL;
-- ODS_SAFETY_TRAIN_DETIAL 安全教育培训(明细表)
create table ODS_SAFETY_TRAIN_DETIAL_bak_20230412 as select * from ODS_SAFETY_TRAIN_DETIAL;
truncate table ODS_SAFETY_TRAIN_DETIAL;
-- ODS_SAFETY_DRILL_DETAIL 应急预案与演练
create table ODS_SAFETY_DRILL_DETAIL_bak_20230412 as select * from ODS_SAFETY_DRILL_DETAIL;
truncate table ODS_SAFETY_DRILL_DETAIL;
-- ODS_SAFETY_PROBLEM_DETAIL 非红线问题隐患排查治理情况(过程问题隐患排查)
create table ODS_SAFETY_PROBLEM_DETAIL_bak_20230412 as select * from ODS_SAFETY_PROBLEM_DETAIL;
truncate table ODS_SAFETY_PROBLEM_DETAIL;
-- ODS_SAFETY_RISK_LEVEL_DETAIL 安全风险分级管控情况(风险分级管控)
create table ODS_SAFETY_RISK_LEVEL_DETAIL_bak_20230412 as select * from ODS_SAFETY_RISK_LEVEL_DETAIL;
truncate table ODS_SAFETY_RISK_LEVEL_DETAIL;
-- ODS_SAFETY_RISK_LARG_DETAIL 危险性较大工程风险管控情况
create table ODS_SAFETY_RISK_LARG_DETAIL_bak_20230412 as select * from ODS_SAFETY_RISK_LARG_DETAIL;
truncate table ODS_SAFETY_RISK_LARG_DETAIL;
-- ODS_SAFETY_CONTR_DETAIL 平安工地考核
create table ODS_SAFETY_CONTR_DETAIL_bak_20230412 as select * from ODS_SAFETY_CONTR_DETAIL;
truncate table ODS_SAFETY_CONTR_DETAIL;
-- ODS_SAFETY_FEE_COST_DETAIL 安全生产费投入情况(安全生产费用)
create table ODS_SAFETY_FEE_COST_DETAIL_bak_20230412 as select * from ODS_SAFETY_FEE_COST_DETAIL;
truncate table ODS_SAFETY_FEE_COST_DETAIL;
-- 交工检测
create table ODS_HANDOVER_INSPECTION_bak_20230412 as select * from ODS_HANDOVER_INSPECTION;
truncate table ODS_HANDOVER_INSPECTION;
create table ODS_HANDOVER_INSPECTION_DETAIL_bak_20230412 as select * from ODS_HANDOVER_INSPECTION_DETAIL;
truncate table ODS_HANDOVER_INSPECTION_DETAIL;
-- 质量问题排查
create table ODS_QUALITY_PROBLEM_RED_DETAIL_bak_20230412 as select * from ODS_QUALITY_PROBLEM_RED_DETAIL;
truncate table ODS_QUALITY_PROBLEM_RED_DETAIL;
create table ODS_QUALITY_PROBLEM_NO_RED_DETAIL_bak_20230412 as select * from ODS_QUALITY_PROBLEM_NO_RED_DETAIL;
truncate table ODS_QUALITY_PROBLEM_NO_RED_DETAIL;
-- 中间表
truncate table HZ_AQ_ZTXX;
truncate table HZ_AQ_PAGDZT;
truncate table HZ_AQ_PAGDZT;
truncate table HZ_AQ_SCF;
truncate table HZ_ZL_ZTQK;
```

@ -0,0 +1,9 @@
计划:
一、数据迁移
- [ ] 梳理RoadInfoMgrYNJT表结构
- [ ] 对照计量支付界面梳理新表
工作日志:
事权:
1. 对接段,讨论事权中间表处理方式
2. 梳理目前统计层接口使用到的汇总表

@ -0,0 +1,9 @@
计划:
一、事权
- [x] 完成统计层接口使用到的汇总表梳理
工作日志:
一、事权:
1. 新增环水保多项目明细跳转单项目明细查询接口
2. 完成统计层接口使用到的汇总表梳理
3. 环水保多项目排序规则修改

@ -0,0 +1,4 @@
计划:
一、事权
- [ ] bugfix
- [ ] 梳理事权统计表与ODS表数据流向

@ -0,0 +1,11 @@
计划:
一、事权
- [x] 梳理征地拆迁、合同管理、质量安全环水保汇总表与原始表关系
- [ ] 存储过程执行语句分析功能开发
工作日志:
一、事权:
1. 完成项目进度、质量安全环水保、合同管理、征地拆迁、工程变更汇总表与原始表关系梳理
2. 单项目-->征地拆迁问题明细去重
3. 单项目-->环水保落实情况接口新增OID
4. 多项目-->质量安全环水保-->风险分级管控-->危大工程分级管控情况、各项目危大工程管控情况新增未评审方案占比数

@ -0,0 +1,9 @@
计划:
一、事权:
- [x] 完成总体概况、基建程序、筹融资及资金使用汇总表与原始表关系梳理
工作日志:
一、事权
1. 完成汇总表数据血缘关系梳理
2. 整理梳理过程中发现的问题
3. 编写征地拆迁、质量安全汇总表数据清理脚本

@ -0,0 +1,9 @@
计划:
一、事权
- [ ] 汇总表问题梳理及改造评审
- [ ] 梳理昭通高速企业智慧办公系统中HR部分设计及字段不合理情况
工作日志:
一、昭通OA
1. 梳理昭通OA-HR管理模块问题点
2. 梳理HR管理模块-人员管理流程图并进行评审

@ -0,0 +1,13 @@
计划:
一、昭通OA
- [x] 根据19号评审结果对HR-人员管理流程进行细化
- [x] 组织二次评审
工作日志
一、昭通OA
1. HR-人员管理流程细化
2. 增加人员合同管理模块
3. 根据评审意见进行修改:
1. 修改退休及返聘流程
2. 增加终止合同流程
3. 加入合同状态变化

@ -0,0 +1,7 @@
计划:
一、昭通OA
- [ ] 根据客户给出工资计算表及现有OA系统梳理并设计薪资管理模块
工作日志:
一、昭通OA
1. 对照蓝凌OAHR模块梳理并补充现有HR模块

@ -0,0 +1,9 @@
计划:
一、事权
- [ ] 使用pdman 梳理DW表到ODS表字段级别血缘关系
工作日志:
一、事权
1. 搭建事权ODS-DW表同步框架
2. 编写周报

@ -0,0 +1,9 @@
计划:
一、事权
- [x] 项目进度-->合理性分析ODS到DW层数据同步
工作日志:
一、事权
1. 项目进度-->控制性工程进度重写DW_RE_PROGRESS_DETAIL表
二、其他
1. 茶话会

@ -0,0 +1,12 @@
计划:
一、事权
- [ ] 开发DW_RE_PROGRESS_DETAIL 接口(按年、按月刷新数据)
- [ ] 部署到测试服务器
- [ ] 对接前端
- [ ] 修改控制性工程进度界面查询接口对接DW_RE_PROGRESS_DETAIL表
工作日志:
一、事权
1. 排查DW_RE_PROGRESS_DETAIL表数据不准确问题
二、昭通OA
1. 梳理车辆管理建表需求对照蓝凌OA、泛微

@ -0,0 +1,7 @@
计划:
一、昭通OA
1. 对照需求及第三方OA梳理车辆管理表结构
工作日志:
一、昭通OA
1. 新建车辆管理模块11张表并进行评审

@ -0,0 +1,7 @@
计划:
一、昭通OA
- [ ] 完成车辆模块建表,并输出表结构文档提交昭通团队二次评审
- [ ] 确定代码集定义及需新增的字段
二、事权
1.

@ -0,0 +1,48 @@
[云南交发省级事权高速公路建设项目综合管理信息平台](http://172.16.3.244/home) ---未上线
admin/admin@2022
FINANCE_ACOUNT_DW --- 到位资金金额
FINANCE_ACOUNT_DW_RATIO --资金到位率
FINANCE_TOTAL --累计计划到位金额
INVEST_ACOUNT_DW --- 投资到位金额
INVEST_ACOUNT_DW_RATIO ----投资到位率
INVEST_TOTAL --- 计划投资金额
MY --- 年月
[软件研发与服务云平台]([软件研发和服务云平台](http://172.16.3.219/atdplatform/)) ---正式环境
Zourui/12345
[交通工程建设项目管理平台(计量支付)](http://172.16.3.145/)
admin/12345
http://220.165.247.94:3227/index.php/apps/files/?dir=/20230403&openfile=34168
邹瑞
zhourui
zhourui12345678
[dataX-web](http://172.16.3.145:9527/index.html)
admin/123456
dataX-web使用的mysql 172.16.3.145:3306 root/1qaz@1234
[禅道](http://220.165.247.68:29980/zentao)
zourui/zourui#123
[昭通高速企业智慧办公系统-测试环境](http://172.16.3.220/home)
admin/Atd@2021
[昭通高速企业智慧办公系统](http://172.16.3.221/home)
admin/Atd@2021
代码集: http://172.16.3.219/
zour / dasiwoyebushuo
SVNhttp://172.16.2.2/svn/paas/microservice/server/other/xmgl-sqddt
zourui/zourui
泛微 :访问地址:![](file:///C:\Users\89295\AppData\Roaming\Tencent\QQTempSys\%W@GJ$ACOF(TYDYECOKVDYB.png)https://enterprise.e-cology.com.cn
登录账号demoano  |  登录密码90683
蓝凌 18787010990

@ -0,0 +1,17 @@
## 一、第一阶段
### 1. 视图、存储过程逆向分析并构建关系图
已完成
### 2. 定时构建
1. 通过apscheduler实现定时任务
## 二、第二阶段
### 1. 数据库版本差异扫描及版本管理
### 2. 数据比对工具
### 3. 数据探查
### 4. 表结构生成(支持不同类型数据库互转)
### 5. FastApi 开发http查询接口
## 三、第三阶段
### 1. 元查询、展示
### 2. 字段级别血缘关系分析实现
### 3. 字段级别、表级别血缘关系展示

@ -0,0 +1,149 @@
# 一、POM
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
# 二、使用注解
+ 配置redis
```java
//开启基于注解的配置
@EnableCaching
@Configuration
public class RedisConfig {
/**
* redis数据库自定义key的命名空间
*/
public static final String REDIS_DATABASE_KEY="tmall_springboot";
public static final String REDIS_CATEGORY_KEY="category";
public static final String REDIS_ORDER_ITEM_KEY="orderItem";
public static final String REDIS_ORDER_KEY="order";
public static final String REDIS_PRODUCT_KEY="product";
public static final String REDIS_PROPERTY_KEY="property";
public static final String REDIS_PROPERTY_VALUE_KEY="propertyValue";
public static final String REDIS_REVIEW_KEY="review";
public static final String REDIS_USER_KEY="user";
public static final String REDIS_PRODUCT_IMAGE_KEY="productImage";
/**
* 自动配置的redisTemplate存在序列化问题会导致存入redis数据库中的数据不容易看清所以需要自己配置
*/
/**
* 配置自定义redisTemplate
* @return
*/
@Bean
RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory,RedisSerializer redisSerializer) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置键key的序列化采用StringRedisSerializer。
redisTemplate.setKeySerializer(new StringRedisSerializer());
// 设置值value的序列化采用Jackson2JsonRedisSerializer。
redisTemplate.setValueSerializer(redisSerializer);
// 设置hashKey的序列化
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(redisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
/**
* 配置json序列化器(我们使用jackson的序列化器)
*/
@Bean
public RedisSerializer redisSerializer(){
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
return jackson2JsonRedisSerializer;
}
/**
* 配置redis缓存管理器,管理注解版的缓存
*/
@Bean
public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory,RedisSerializer redisSerializer) {
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
//设置Redis缓存有效期为10分钟
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
//ttl
.entryTtl(Duration.ofHours(2));
return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
}
}
```
+ @Cacheable
先从redis数据库中 按照当前key查找有没有。如果redis中有是不会走当前该方法的如果没有再调用方法返回结果如果结果不为null将其缓存到数据库中一般用于find
```java
@Cacheable(value = RedisConfig.REDIS_DATABASE_KEY, key = "'user-'+#p0", unless = "#result==null")
@Override
public User getUserByName(String name) {
UserExample example = new UserExample();
example.createCriteria().andNameEqualTo(name);
List<User> users = userMapper.selectByExample(example);
if(users.size()==0){
return null;
}
return users.get(0);
}
```
valuekey的一部分前缀主要是指明数据放在那个key范围
keykey的主体#p0指明取出第一个参数 #p1:指明取出第二个参数。。。依此类推
unless结果为true将当前的数据结果不保存到redis#result指明取出数据库中返回的结果
condition 结果如果为true将当前数据保存到redis
+ @CachePut
主要用于向数据库中插入数据向数据中插入数据的时候会将返回的int类型放入redis中缓存当然是有选择性的(一般用于insert)
```java
@CachePut(value = RedisConfig.REDIS_DATABASE_KEY,key = "'user-insert-'+#p0.id",unless = "#result==0")
@Override
public int insert(User record) {
return userMapper.insert(record);
}
```
valuekey的一部分命名空间
key指定key的名称
unless满足条件则不将返回的结果放入redis
condition 满足条件则将返回的结果放入redis
+ @CacheEvict
满足条件则移除当前key在redis中的数据一般用于update/delete
```java
@CacheEvict(value = RedisConfig.REDIS_DATABASE_KEY,key = "'user-'+#p0.id",condition = "#result==1")
@Override
public int updateByPrimaryKey(User record) {
return userMapper.updateByPrimaryKey(record);
}
```
value 同理命名空间
key key名称
condition满足什么条件从缓存中移除指定的key
AllEntriestrue/false 是否移除命名空间下的所有key
# 三、硬编码
使用StringRedisTemplate

@ -0,0 +1,6 @@
# 一、安装
1. 需要先安装datax
# 二、测试及使用
# 三、节点扩容(集群搭建)

@ -0,0 +1,14 @@
[dataX](https://github.com/alibaba/DataX/blob/master/userGuid.md)
# 一、下载及安装
1. 从dataX github页面下载tar包并放在/home下
2. 验证Linux是否安装python及jdkpython可以为3jdk为1.8版本
3. 解压datax tar -zxvf /xxxx/datax.tar.gz
# 二、运行测试用例
在datax 目录进入bin例如/home/zr/DataX/datax/bin执行
```shell
python datax.py ../job/job.json
```
执行完成后输出,表示安装成功
![[Snipaste_2023-03-28_09-21-51.png]]

@ -0,0 +1,4 @@
{
"nodes":[],
"edges":[]
}

@ -0,0 +1,51 @@
前提开启hyper-V
1. 获取所有网卡信息
```shell
Get-NetAdapter
```
![[Snipaste_2023-04-01_17-47-48.png]]
2. 启动WSL打开powershell(管理员模式),选择网卡桥接
这里桥接到WLAN
```shell
Set-VMSwitch WSL -NetAdapterName WLAN
# 中文
Set-VMSwitch WSL -NetAdapterName "以太网 3"
```
3. 查看宿主机网关
```shell
ipconfig
```
找到IP段和网关
![[Snipaste_2023-04-01_17-47-48 1.png]]
4. 修改WSL IP地址及网关
```shell
# 绑定到eth0网卡
sudo ip addr del $(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1) dev eth0
# 设置IP段
sudo ip addr add 192.168.0.150/24 broadcast 192.168.0.255 dev eth0
# 设置网关
sudo ip route add 0.0.0.0/0 via 192.168.0.1 dev eth0
```
5. 更新名称解析服务器地址
```shell
vim /etc/resolv.conf
```
修改其中内容为 `nameserver 网关地址`
## 快速设置
```shell
# powershell 管理员,注意修改网卡名称
Set-VMSwitch WSL -NetAdapterName WLAN
# 在wsl中执行
sh /home/zr/setnet.sh
```
## 取消桥接
powershell管理员执行即可恢复
```shell
Set-VMSwitch WSL -SwitchType Internal
```

@ -1,4 +1,12 @@
+ PG12
localhost:5432 postgres:root@123
+ redis
localhost:6379 redispw
localhost:6379 redispw
+ oracle
localhost:1521 zr:root@123
+ neo4j
docker 安装:
1.docker pull neo4j
2. docker run -d --name container_name -p 7474:7474 -p 7687:7687 --env NEO4J_AUTH=neo4j/root@12345 neo4j
http://localhost:7474/ neo4j/clone-formula-shelf-hair-neptune-3446
修改密码::server change-password
Loading…
Cancel
Save