【Linux】按时间抽取附件

#1024程序员节|征文# 


 希望互相学习,共同进步

风123456789~-CSDN博客

1.背景

        附件表 t_file 中有创建时间,需求是抽取202407-202408 月创建的附件到指定目录,并保持层级目录。

        解决方案:由于抽取的附件条数比较多,采用:SQL查询+生成附件清单+cp脚本的方式。

2.实验:脚本抽取

       思路:通过sql将文件目录清单 抽取到指定文件中,然后用cp命令脚本执行。

脚本:extract_file_feng.sh (生成cp脚本+移动附件到 current_menu)

           extract_table_name.txt 存放要执行的sql文件名,可以多个

           sql_model :存放待查询的sql文件

           ok_file : 存放生成的cp 脚本文件

           current_menu :存放抽取的附件结果

1)指定sql

[sxnhtc@appx-container performance]$ cat extract_table_name.txt
cloud_xpt_202407to08
[sxnhtc@appx-container performance]$

2)sql_model 写入sql

准备sql

select 'cp -r '||FOLDER||'/'||NEW_FILE_NAME  ||' /home/sxnhtc/script/performance/current_menu'||FOLDER||'/'   aa
from t_file t
where to_char(T.created,'yyyy-mm') BETWEEN  '2024-07'  AND  '2024-08'
and t.bank_code ='014001007';

截图:共44条

 vim ./sql_model/cloud_xpt_202407to08.sql

将sql写入cloud_xpt_202407to08.sql

[sxnhtc@appx-container performance]$ cd ./sql_model/
[sxnhtc@appx-container sql_model]$ vim cloud_xpt_202407to08.sql

[sxnhtc@appx-container sql_model]$ cat cloud_xpt_202407to08.sql
FLAG=CLOUD
sql="select 'cp -r '||FOLDER||'/'||NEW_FILE_NAME  ||' /home/sxnhtc/script/performance/current_menu'||FOLDER||'/'   aa
from t_file t
where to_char(T.created,'yyyy-mm') BETWEEN  '2024-07'  AND  '2024-08'
and t.bank_code ='014001007';"
[sxnhtc@appx-container sql_model]$

3)ok_file 中模版文件

[sxnhtc@appx-container performance]$ cd /home/sxnhtc/script/performance/ok_file/
[sxnhtc@appx-container ok_file]$ ll
总用量 4
-rw-rw-r-- 1 sxnhtc sxnhtc 15 10月 19 13:51 templet.sh
[sxnhtc@appx-container ok_file]$
[sxnhtc@appx-container ok_file]$ cat templet.sh
#! /bin/bash


[sxnhtc@appx-container ok_file]$

4)脚本文件 .sh

vim extract_file_feng.sh

[sxnhtc@appx-container performance]$ cat extract_file_feng.sh

#!/bin/bash
#Date: 2024年 10月 19日 星期六 12:09:40 CST
#Description: 连接数据库查询所需拷贝文件清单,并根据清单抽取文件到指定目录下
#Description: /home/sxnhtc/script/performance/current_menu/
#Version:1.0
source  ~/.bash_profile
startTime=`date +%Y%m%d-%H:%M:%S`
startTime_s=`date +%s`

#Oracle 数据库 IP 地址
IP="192.168.3.16"
#Oracle数据库 SID
SID="orclpdb1"

#配置文件目录
CONFIG_FILE="/home/sxnhtc/script/performance"

#导出表清单名单
ExpTableName="${CONFIG_FILE}/extract_table_name.txt"

#导出 sql 文件存放位置
SqlFilePath="${CONFIG_FILE}/sql_model"

#导出 结果清单 文件存放位置
OKFileResult="${CONFIG_FILE}/ok_file"


#日期批次 服务器当前时间 减 一个月
#DateBatch=`date --date="1 month ago" '+%Y%m%d'`
DateBatch=${1}

if [ "$#" -ne 1 ]; then
  echo "请传入日期参数,参数格式为: 20240810"
  exit 1
fi

echo ${DateBatch}

#2020
YEAR=${DateBatch:0:4}
#08
MONTH=${DateBatch:4:2}
#01
DAY=${DateBatch:6:2}

DAYDATA=${YEAR}-${MONTH}-${DAY}

#抽取数据表清单生成位置
OKFile="${CONFIG_FILE}/${DateBatch}"

#判断文件是否存在,不存在就创建
if [ ! -d ${OKFile} ];then
   echo -e  "创建 表清单生成的位置\n"

   `/usr/bin/mkdir  -p  ${OKFile}`
else
  cd /tmp/
  rm -rf ${OKFile}/*
fi


#抽取文件到临时位置
OutPutFileTemp="/home/sxnhtc/script/performance/current_menu/"

if [ ! -d ${OutPutFileTemp} ];then
   echo -e "创建所需文件拷贝的current_menu目录位置\n"

   `/usr/bin/mkdir  -p  ${OutPutFile}`
fi

OutPutFile="${CONFIG_FILE}/${YEAR}-${MONTH}"

# 生成的  压缩文件,需要拷贝的位置
#OutZip="/backup/performance/extract_file/tmp/${DAYDATA}"

if [ ! -d ${OutPutFile} ];then
   echo -e "创建所需文件拷贝的目录位置\n"

   `/usr/bin/mkdir  -p  ${OutPutFile}`
else
  cd /tmp/
  ` rm -rf ${OutPutFile} `
  `/usr/bin/mkdir  -p  ${OutPutFile}`
fi

echo -e "开始连Oracle数据库导出清单\n"
#遍历需要导出的表清单名单
for TableName in `cat ${ExpTableName}`
do

#进入到生成数据文本目录
cd ${OKFile}/
#删除旧数据,防止数据重复
rm -rf  ${TableName}.ok

#提取相关变量
#source "${SqlFilePath}/${TableName}.sql"
source "/home/sxnhtc/script/performance/sql_model/cloud_xpt_202407to08.sql"

#判断所属用户
UPD="nh_mcro_cloud/xxx@${IP}/${SID}"

YM=${YEAR}-${MONTH}
#替换指定字符串
SqlNew=${sql//SXNHTC/${YM}}
echo ${SqlNew}

#执行导出
sqluldr2 ${UPD} query="${SqlNew}" field="0x1b"  charset=UTF8 safe=yes file=${OKFile}/${TableName}.ok

done
echo -e "清单导出完毕\n"

#echo -e "根据清单拷贝文件\n"
#passwd='xxx'

#根据表清单,开始抽取文件到指定位置
#for FileName in `cat ${OKFile}/${TableName}.ok`
#do
# 覆盖拷贝
#cp -f ${FileName} ${OutPutFile}/

#`/usr/bin/expect <<-EOF
#set timeout -1
#spawn   rsync -av szptmcro@xxx:${FileName} ${OutPutFile}/
#expect "*password:"
#send "$passwd\r"
#interact
#expect eof
#EOF`

#done

echo -e "生成拷贝脚本\n"
cp -f ${OKFileResult}/templet.sh  ${OKFileResult}/${TableName}.sh
cat ${OKFile}/${TableName}.ok >>  ${OKFileResult}/${TableName}.sh

sh ${OKFileResult}/${TableName}.sh >>${OKFileResult}/${TableName}.log

echo -e "文件拷贝完毕\n"

cd ${OutPutFile}/
touch ${OutPutFile}/${DateBatch}.ok

endTime=`date +%Y%m%d-%H:%M:%S`
endTime_s=`date +%s`
sumTime=$[ ${endTime_s} - ${startTime_s} ]
echo "${startTime} ---> ${endTime}" "Total: ${sumTime} seconds"

5)执行脚本

sh extract_file_feng.sh 20241019 

[sxnhtc@appx-container performance]$ sh extract_file_feng.sh 20241019
20241019
开始连Oracle数据库导出清单

select 'cp -r '||FOLDER||'/'||NEW_FILE_NAME ||' /home/sxnhtc/script/performance/current_menu'||FOLDER||'/' aa from t_file t where to_char(T.created,'yyyy-mm') BETWEEN '2024-07' AND '2024-08' and t.bank_code ='014001007';
           0 rows exported at 2024-10-19 15:37:00, size 0 MB.
          44 rows exported at 2024-10-19 15:37:00, size 0 MB.
.ok closed at 44 rows, size 0 MB./script/performance//20241019/cloud_xpt_202407to08
清单导出完毕

生成拷贝脚本

文件拷贝完毕

20241019-15:36:58 ---> 20241019-15:37:00 Total: 2 seconds
[sxnhtc@appx-container performance]$

 3.生产移动 ok

改为生产要导出的sql:

[sxnhtc@appx-container 20241019]$ cd /home/sxnhtc/script/performance/sql_model/
[sxnhtc@appx-container sql_model]$ cat cloud_xpt_202407to08.sql
FLAG=CLOUD
sql="select 'cp -r '||FOLDER||'/'||NEW_FILE_NAME  ||' /home/sxnhtc/script/performance/current_menu'||FOLDER||'/'   aa
from t_file t
where to_char(T.created,'yyyy-mm') BETWEEN  '2024-07'  AND  '2024-08';"
[sxnhtc@appx-container sql_model]$

执行:nohup sh extract_file_feng.sh 20241019 >extract_file_feng.log &

[sxnhtc@appx-container performance]$ nohup sh extract_file_feng.sh 20241019 >extract_file_feng.log &
[1] 216429
[sxnhtc@appx-container performance]$ nohup: 忽略输入重定向错误到标准输出端
^C
[sxnhtc@appx-container performance]$ ps -ef |grep extract_file_feng.sh
sxnhtc   216429 126005  0 16:28 pts/0    00:00:00 sh extract_file_feng.sh 20241019
sxnhtc   216648 126005  0 16:28 pts/0    00:00:00 grep --color=auto extract_file_feng.sh
[sxnhtc@appx-container performance]$
[sxnhtc@appx-container performance]$ tail -200f extract_file_feng.log

 结果截图: ok

脚本位置生成:

目标位置 文件生成:

/home/sxnhtc/script/performance/current_menu/

find . -type d | wc -l   # 统计子目录数量
find . -type f | wc -l     # 统计文件数量


       find .:在当前目录及其子目录中查找。
      -type d:指定查找的类型为目录。
      -type f:指定查找的类型为普通文件。
      |:管道命令,将前一个命令的输出作为下一个命令的输入。
      wc -l:统计行数,这里每个目录或文件占一行

至此,结束。 ok 


项目管理--相关知识   

项目管理-项目绩效域1/2-CSDN博客

项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客

项目管理-项目绩效域2/2_绩效域 团不策划-CSDN博客

高项-案例分析万能答案(作业分享)-CSDN博客

项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客

项目管理-配置管理与变更-CSDN博客

项目管理-项目管理科学基础-CSDN博客

项目管理-高级项目管理-CSDN博客

项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客


Oracle其他文档,希望互相学习,共同进步

Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客

oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客

ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-CSDN博客

EXP-00091: Exporting questionable statistics.解决方案-CSDN博客

Oracle 更换监听端口-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024 睿抗机器人开发者大赛(RAICOM)-【网络安全】CTF 部分WP

文章目录 一、前言二、MICS你是黑客么循环的压缩包Goodtime 三、WEBpy 四、Crypto变异凯撒RSAcrypto3 一、前言 WP不完整&#xff0c;仅供参考&#xff01; 除WEB&#xff0c;RE&#xff0c;PWN外&#xff0c;其余附件均已打包完毕 也是一个对MISC比较友好的一个比赛~ 123网…

ES6:let和const命令解读以及变量的解构赋值

有时候&#xff0c;我们需要的不是答案&#xff0c;而是一双倾听的耳朵 文章目录 let和const命令变量的解构赋值 let和const命令 let和const命令都是声明变量的关键字&#xff0c;类同varlet特点 用来声明变量&#xff0c;不能再次定义&#xff0c;但是值可以改变存在块级作用…

【Nuvoton干货分享】开发应用篇 5 -- 32bit MCU Flash 操作

在实际开发中&#xff0c;我们都会碰到需要把部分数据存放在不易失存储空间上&#xff0c;比如外部NOR FLASH、EEPROM、SD等存储空间上&#xff0c;针对数据量不大的情况下&#xff0c;可以考虑将数据存放在芯片ROM存储空间。Nuvoton 32bit MCU ROM存储空间包括LDROM、APROM、S…

什么是缓存?

缓存是将文件副本存储在临时位置的过程&#xff0c;以便可以更快地访问这些文件。从技术上讲&#xff0c;缓存是文件或数据副本的任何临时存储位置&#xff0c;但通常是指互联网技术中的缓存。Web 浏览器缓存 HTML 文件、JavaScript 和图像&#xff0c;以便更快地加载网站&…

python 爬虫抓取百度热搜

实现思路&#xff1a; 第1步、在百度热搜页获取热搜元素 元素类名为category-wrap_iQLoo 即我们只需要获取类名category-wrap_为前缀的元素 第2步、编写python脚本实现爬虫 import requests from bs4 import BeautifulSoupurl https://top.baidu.com/board?tabrealtime he…

npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined

npm run serve 提示Cannot read property ‘upgrade’ of undefined 一般是proxy的target代理域名问题导致的&#xff0c;如下&#xff1a; 解决方案&#xff1a; proxy: { “/remoteDealerReportApi”: { target: ‘http://demo-.com.cn’, //此域名有问题&#xff0c;会导致…

阿里云项目启动OOM问题解决

#1024程序员节&#xff5c;征文# 问题描述 随着项目业务的增长&#xff0c;系统启动时内存紧张&#xff0c;每次第一次启动的时候就会出现oom第二次或者第n的时候&#xff0c;就启动成功了。 带着这个疑问&#xff0c;我就在阿里云上提交了工单&#xff0c;咨询为什么第一次…

WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)

一、前言 随着物联网&#xff08;IoT&#xff09;技术的飞速发展&#xff0c;越来越多的设备开始连接到互联网&#xff0c;形成了一个万物互联的世界。在这个背景下&#xff0c;设备与云端之间的通讯变得尤为重要。 本文将探讨几种常见的无线通信模块——EC20-4G、Air724ug-4…

CTFHUB技能树之文件上传——MIME绕过

开启靶场&#xff0c;打开链接&#xff1a; 直接指明是MIME验证 新建04MIME.php文件&#xff0c;内容如下&#xff1a; <?php echo "Ciallo&#xff5e;(∠・ω< )⌒★";eval($_POST[pass]);?> &#xff08;这里加了点表情&#xff0c;加带点私货&#x…

传感器驱动系列之PAW3212DB鼠标光电传感器

目录 一、PAW3212DB鼠标光电传感器简介 1.1 主要特点 1.2 引脚定义 1.3 传感器组装 1.4 应用场景 1.5 传感器使用注意 1.5.1 供电选择 1.5.2 SPI读写设置 1.5.3 MOTION引脚 1.6 寄存器说明 1.6.1 Product_ID1寄存器 1.6.2 MOTION_Status寄存器 1.6.3 Delta_X寄存器…

GRU神经网络理解

全文参考以下B站视频及《神经网络与深度学习》邱锡鹏&#xff0c;侧重对GPU模型的理解&#xff0c;初学者入门自用记录&#xff0c;有问题请指正【重温经典】GRU循环神经网络 —— LSTM的轻量级版本&#xff0c;大白话讲解_哔哩哔哩_bilibili 更新门、重置门、学习与输出 注&a…

Go通过gorm连接sqlserver报错TLS Handshake failed

Go通过gorm连接sqlserver报错TLS Handshake failed [error] failed to initialize database, got error TLS Handshake failed: tls: server selected unsupported protocol version 301 panic: TLS Handshake failed: tls: server selected unsupported protocol version 301 …

综合小程序的设计

熟悉python可视化的设计 完成综合小程序的设计。 登录系统设计 from tkinter import * import tkinter.messagebox def onClick(): namebname.get() pwdbpwd.getO() if (namezhou and pwd123): tkinter.messagebox.showinfo(title提示,message登陆成功&a…

Linux 中 .bash_history、.bash_logout 等用户配置文件

目录 前言.bash_history.bash_logout.bash_profile.bashrc.cshrc.tcshrc.viminfo 总结 前言 在 Linux 中我们经常会看见用户家目录下存在 .bash_history、.bash_logout、.bash_profile、.bashrc、.cshrc、.tcshrc、.viminfo 这写文件&#xff0c;那它们区别是什么呢&#xff1…

2024软考网络工程师笔记 - 第8章.网络安全

文章目录 网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型3️⃣安全目标与技术 &#x1f551;现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 &#x1f552…

Unity CRP学习笔记(一)

Unity CRP学习笔记&#xff08;一&#xff09; 主要参考&#xff1a; https://catlikecoding.com/unity/tutorials/custom-srp/ https://docs.unity.cn/cn/2022.3/ScriptReference/index.html 中文教程部分参考&#xff08;可选&#xff09;&#xff1a; https://tuncle.blog/c…

算力的定义、单位、影响因素、提升方法、分类、应用等。附超算排名

文章目录 算力的定义算力的单位FLOPS&#xff08;Floating Point Operations Per Second&#xff0c;浮点运算次数/秒&#xff09;IPS&#xff08;Instructions Per Second&#xff0c;指令/秒&#xff09;TOPS&#xff08;Trillion Operations Per Second&#xff0c;万亿次/秒…

Win10系统安装docker操作步骤

Docker下载 docker下载地址&#xff1a;Docker: Accelerated Container Application Development 打开网页后&#xff0c;点击图下所示&#xff0c;下载windows版本的docker 启用Hyper-V 和容器特性 右键左下角windows图标&#xff0c;选择应用和功能 然后在下面的界面中&am…

【Nuvoton干货分享】开发应用篇 4 -- 8bit MCU Flash 操作

我们在进行实际开发设计中&#xff0c;难免需要进行数据存储&#xff0c;早期很多都是外接EEPROM来进行设计&#xff0c;但是需要增加成本。其实芯片内部的Flash也是可以当成数据存储空间的。本章节主要介绍新唐的8位机如何进行常量数据的存储操作。 一、存储空间划分 我这边…

w~自动驾驶合集6

我自己的原文哦~ https://blog.51cto.com/whaosoft/12286744 #自动驾驶的技术发展路线 端到端自动驾驶 Recent Advancements in End-to-End Autonomous Driving using Deep Learning: A SurveyEnd-to-end Autonomous Driving: Challenges and Frontiers 在线高精地图 HDMa…