完整脚本如下 #!/bin/bash #当天抽取 TIMERESULT=`date +"%Y%m%d"` #TIMERESULT=`date -d '1 days ago' +"%Y%m%d"` TIMEMONTHS=`date +"%Y%m"` dir_path="/home/s_it_res/datax/datax/jsoncfg/oracle_to_kudu_0413/script/gfc/GKZZ/${TIMERESULT}" cd $dir_path file_name="831_GKZZ_DF_FTTH_OBD_ZZ_DTL_NEW_${TIMERESULT}_${TIMERESULT}_D_00_0001.DAT" file_size=$(du -m "$file_name" | cut -f1) if [ "$file_size" -gt 100 ]; then # 如果文件大小超过100M,则进行切割 split -C 100M -d "$file_name" "$file_name" # 重命名切割后的文件 i=1 for f in "$file_name"??; do mv "$f" "831_GKZZ_DF_FTTH_OBD_ZZ_DTL_NEW_${TIMERESULT}_${TIMERESULT}_D_00_$(printf "%04d" $i).DAT" ((i++)) done # 压缩文件 gzip 831_GKZZ_DF_FTTH_OBD_ZZ_DTL_NEW_${TIMERESULT}_${TIMERESULT}_D_00*.DAT fi echo $result
时间: 2024-04-22 16:25:24 浏览: 195
根据完整的脚本,最后一个后缀为9000的原因是在重命名切割后的文件时,变量i的初始值设定为1,并且在每次循环中递增1。由于切割后的文件数量未知,因此无法确定最后一个文件的具体序号。在脚本中并没有明确指定最大的文件数量,所以循环将一直执行,直到没有符合条件的文件为止。因此,最后一个文件的序号取决于切割后的文件数量。根据脚本中的逻辑,最后一个文件的序号将是切割后的文件数量加1。
相关问题
shell脚本抽取Gbase
### 编写用于从 GBase 数据库抽取数据的 Shell 脚本
为了满足需求,可以从 GBase 8a 数据库中提取指定的大表名称及其时间字段,并按照给定的时间间隔生成同步记录。此过程可以通过编写一个 Shell 脚本来完成。
#### 准备工作
确保已经安装并配置好 `gsql` 工具,这是访问 GBase 的命令行工具之一。还需要具备相应的数据库连接权限以及了解目标表格的具体结构。
#### 创建 Shell 脚本
下面是一个简单的 Shell 脚本模板,它会读取环境变量中的数据库连接参数来执行查询操作:
```bash
#!/bin/bash
# 设置日期范围 (可以根据实际需要调整)
START_DATE="2020-06-01"
END_DATE="2020-06-02"
# 获取当前路径作为输出目录
OUTPUT_DIR=$(pwd)
# 构建 SQL 查询语句
SQL_QUERY="
SELECT 'buf_' || table_schema || '.t_' || table_name || '_pb_aayjl:' \
|| 'in_' || column_name || '_' || database() || '.t_' || table_name || '_pb_aayjl:' \
|| column_name || ':' || '${START_DATE}' || ':' || '${END_DATE}'
FROM information_schema.columns c,information_schema.tables t
WHERE c.table_name=t.table_name AND c.column_type LIKE '%date%'
AND t.table_rows > 1000;"
# 使用 gsql 执行查询并将结果保存到文件
echo "正在从 GBase 提取数据..."
gsql -h localhost -p 5298 -U user -W password -d dbname -c "${SQL_QUERY}" | sed '/^$/d' > ${OUTPUT_DIR}/table_name.txt
if [ $? -eq 0 ]; then
echo "成功导出了表名和时间字段至 ${OUTPUT_DIR}/table_name.txt 文件."
else
echo "导出失败,请检查日志信息."
fi
```
上述脚本实现了如下功能:
- 定义了起始时间和结束时间。
- 利用了 `information_schema` 来查找符合条件的数据表及列。
- 将构建好的字符串格式化为所需的输出样式[^1]。
- 使用 `sed` 命令去除多余的空白行。
- 输出最终的结果到本地磁盘上的 `table_name.txt` 文件中。
请注意,在运行之前需替换掉示例中的主机地址、端口号、用户名、密码等敏感信息,并确认这些设置与实际情况相符。
阅读全文
相关推荐

















