Skip to content

达梦dmfldr操作

官方文档

https://eco.dameng.com/document/dm/zh-cn/pm/getting-started-dmfldr.html

安装部署

使用达梦数据库安装包

选择自定义,选控制台工具,交互式查询工具,驱动程序

直接安装即可

设置环境变量

vim ~/.bashrc

追加如下

bash
export PATH="/home/user1/dmdbms/bin:$PATH"
export PATH="/home/user1/dmdbms/tool:$PATH"

环境变量生效 source ~/.bashrc

验证使用dmfldr help

准备控制文件和脚本

控制文件 test_abc.ctl

txt
LOAD DATA
INFILE *
REPLACE
INTO TABLE test_abc
FIELDS '|'
(
c_name "trim()",
c_id "trim()",
f_mv "trim()"
)

导入文件exec_import.sh脚本

bash
#!/bin/bash

#脚本接收参数date
DATE=$1
# 检查是否提供了参数
if [ -z "$DATE" ]; then
  echo "错误:请提供日期参数。"
  echo "用法: $0 <YYYYMMDD>"
  exit 1
fi
#定义全局数据库连接串
USER_ID='username/[email protected]:5236'
#定义全局日志目录
LOG_DIR=log/$DATE
mkdir -p $LOG_DIR
#定义全局数据文件目录
DATA_DIR=data/$DATE
#导入test_abc数据
dmfldr userid=$USER_ID control=\'test_abc.ctl\' mode=\'in\' data=\'"$DATA_DIR"/test_abc.dat\' badfile=\'"$LOG_DIR"/test_abc.bad\' log=\'"$LOG_DIR"/test_abc.log\'
# 检查上一个命令的退出状态 ($?)
if [ $? -ne 0 ]; then
  echo "上一个命令执行失败,退出。"
  exit 1
fi
# 如果上一个命令返回 0,则继续执行后续操作
echo "上一个命令执行成功,继续执行。"

导出文件exec_export.sh脚本

bash
#!/bin/bash

#定义全局数据库连接串
USER_ID='username/[email protected]:5236'
#全局导出目录
OUT_DIR='./out'

#导出test_abc数据
echo dmfldr userid=$USER_ID control=\'test_abc.ctl\' mode=\'out\' data=\'"$OUT_DIR"/abc.dat\'
dmfldr userid=$USER_ID control=\'test_abc.ctl\' mode=\'out\' data=\'"$OUT_DIR"/abc.dat\' log=\'"$OUT_DIR"/test_abc.log\'
# 错误1成功0
RES=$?
echo $RES