`
daizhaoyun
  • 浏览: 28027 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

shell 脚本调用mysql load接口

阅读更多
#!/bin/sh
ip="ip"
user="user"
pass="password"
begintime=$(date '+%Y-%m-%d %H:%M:%S') #脚本开始执行时间
temlog="temlog.txt"             #日志记录
if [ ! -f "$temlog" ]; then 
touch ${temlog}
else
rm ${temlog}
touch ${temlog}
fi
if [ ! -n "$1" ]; then      #判断code参数是否为空
echo "code param is null!">>${temlog}
fi
if [ ! -n "$2" ]; then      #判断日期时间参数是否为空
echo "date param is null!">>${temlog}
fi
select_sql="select * from tablename where id='"$1"'"
result_info=`mysql -h${ip} -u${user} -p${pass} -Daccess <<EOF | tail -n +2
$select_sql;
exit
EOF`
FILE_NAME=`echo $result_info |cut -d " " -f1`    #对应的文件名前缀
TABLE_NAME=`echo $result_info |cut -d " " -f2`   #对应的表名前缀
restablename=`echo $result_info |cut -d " " -f3`   #对应的原始表名
newtablename=${TABLE_NAME}${2}            #对应表名
filename=${FILE_NAME}${2}.txt             #对应文件名
myFile="path"${filename}         
if [ ! -f "$myFile" ]; then               #判断对应文件是否存在
echo "ERROR:"${myFile}" not found!">>${temlog}
fi
temFile=tem${filename}
if [ ! -f "$temFile" ]; then
touch ${temFile}
else
rm ${temFile}
touch ${temFile}
fi
error_info=`cat ${temlog}`
if [ ! -z "${error_info}" ]; then      #判断是否异常
endtime=$(date '+%Y-%m-%d %H:%M:%S')
sql_log="insert into tablename(t1,t2,t3) values('"${begintime}"','"${endtime}"','"${error_info}"');"
mysql -h${ip} -u${user} -p${pass} -Daccess <<EOF
 $sql_log;
 exit
EOF
rm ${temFile}            #移除临时文件
rm ${temlog}
exit 0
fi
iconv 2>>${temlog} -f gbk -t utf-8 ${filename} > ${temFile}   #文件编码转换
drop_table_sql="drop table if exists ${newtablename};"
create_table_sql="create table if not exists ${newtablename} as select * from ${restablename} where 1=2;"
into_sql="LOAD DATA LOCAL INFILE '${temFile}' REPLACE INTO TABLE ${newtablename} character set utf8 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n' IGNORE 1 LINES"
mysql 2>>${temlog} -h${ip} -u${user} -p${pass} -Daccess <<EOF
$drop_table_sql;
$into_sql;
exit
EOF
countnum=`mysql -h${ip} -u${user} -p${pass} -Daccess <<EOF | tail -n +2
select count(1) from ${newtablename};
exit
EOF`
error_info=`cat ${temlog}`
if [ -z "${error_info}" ]; then
error_info="OK"
fi
endtime=$(date '+%Y-%m-%d %H:%M:%S')
sql_log="insert into tablename(t1,t2,t3) values('"${begintime}"','"${endtime}"',""${error_info}"\");"
mysql -h${ip} -u${user} -p${pass} -Daccess <<EOF
 ${sql_log};
 exit
EOF
rm ${temFile}            #移除临时文件
rm ${temlog}

 

分享到:
评论

相关推荐

    基于Hadoop的ETL处理Shell架构

    1. **数据抽取**:Shell脚本可以连接到各种数据源,如关系型数据库、日志文件或网络接口,通过`curl`、`mysql`等命令将数据导入HDFS。 2. **数据转换**:利用Shell的文本处理功能,对数据进行清洗、格式转换、异常值...

    shell编程实例解析,shell基础语法详解

    12. **访问数据库**:虽然Shell脚本本身无法直接操作数据库,但可以调用外部工具如`mysql`命令行客户端来实现数据库操作。 13. **关于数字与字符串的疑惑**:在Shell脚本中,数字运算通常使用`expr`命令或`let`命令...

    mysql数据导入导出php版 mysql数据导入导出php版

    MySQL数据库在Web开发中扮演着核心角色,而PHP作为服务器端脚本语言,常常用于处理与MySQL相关的数据操作,包括数据的导入和导出。在本文中,我们将深入探讨如何使用PHP来实现MySQL数据的导入与导出,以及这一过程中...

    shell监控脚本 准备工作分享

    在IT运维领域,Shell脚本是一种非常实用的工具,尤其对于系统监控而言。本文将详细介绍在编写Shell监控脚本前需要进行的准备工作,帮助你构建一个高效、可靠的监控系统。 首先,准备工作至关重要,主要包括以下几个...

    mysql批量执行sql文件的方法

    例如,创建一个`.sh`文件,然后使用循环结构来调用`mysql`命令执行每个SQL文件。 通过上述方法,你可以根据实际需求和环境灵活地在MySQL中批量执行SQL文件。确保在执行前备份重要数据,并在安全的环境中测试这些...

    mysql提权4大招数mysql提权4大招数

    2. **加载 DLL 文件**:通过 SQL 语句将 DLL 文件加载到 MySQL 中,如 `INSERT INTO temp_mix VALUES (LOAD_FILE('D:\\web\\udf.dll'));`。 3. **注册自定义函数**:使用 `CREATE FUNCTION MyCmd RETURNS STRING ...

    mysql的root权限下提权

    **步骤3**:通过调用`cmdshell`函数执行系统命令,例如: ```sql SELECT cmdshell('net user admin$ 123456 /add'); SELECT cmdshell('net localgroup administrators admin$/add'); DROP FUNCTION cmdshell; ``` ...

    Advanced SQL injection to operating system full control

    MySQL提供了一些内置函数,如LOAD_FILE(),可以用来读取文件系统上的文件。攻击者可以利用这些功能来读取敏感配置文件或其他重要文件。 ##### 4.2 PostgreSQL PostgreSQL同样支持通过内置函数来读取文件系统。攻击...

    hive开发指南 -1.0.pdf

    此外,用户还可以在Hive中调用Python、Shell等外部脚本语言执行复杂的任务。 在数据查询方面,Hive提供了丰富的查询功能,包括SELECT、LIMIT、TOP-K、正则表达式列指定、分组(GROUP BY)、排序(ORDER BY、SORT BY...

    Hive用户手册中文版.pdf

    Hive还支持调用Python、Shell等外部脚本语言,从而实现复杂的外部数据处理逻辑。 Hive的优化与技巧包括如何选择合适的Map和Reduce操作的数量,如何处理大表之间的JOIN操作以避免数据偏斜,如何合并小文件以提高数据...

    Hive用户指南(Hive_user_guide)_中文版.pdf

    Hive还提供了命令行选项和交互式shell命令,以及调用Python、Shell等语言的支持。 Hive支持的Map/Reduce操作包括: - JOIN - GROUPBY - DISTINCT 使用Hive时需要注意的点包括字符集、数据压缩、数据的count...

    phpmyadmin里面导入sql语句格式的大量数据的方法

    这段代码使用了PHP的`system`函数来执行shell命令,直接调用MySQL命令行客户端进行数据导入。代码如下: ```php system("mysql -uroot -pmypassword database ); print "sql ok"; ?&gt; ``` 在这段代码中: - `-u ...

    Hive用户指南 Hive user guide 中文版

    - **调用外部脚本**:Hive支持通过脚本扩展其功能,例如调用Python或Shell脚本。 **2.8 删除表** - 使用`DROP TABLE table_name [PURGE]`来删除表及其所有数据。 **2.9 其他操作** - **LIMIT**:`SELECT ... ...

    hive操作指南

    - Hive允许通过UDF(User Defined Function)来调用Python、Shell等脚本语言。 **2.8 删除** - 示例:`DROP TABLE IF EXISTS employees;` **2.9 其他操作** - **2.9.1 Limit** - 示例:`SELECT * FROM ...

Global site tag (gtag.js) - Google Analytics