mysql -- 通过linux shell 脚本,导出部分数据

来源:互联网 发布:算法心得 原书 编辑:程序博客网 时间:2024/05/22 07:39

1.构建我的shell 脚本

(1)最初情况

  • 下面这些语句还是有不少缺点的,从中可以看出来有大量的重复,应该想办法简化,尝试去使用变量。
  • 简化之后,达到的目的应该是最少的修改。

#!/bin/bashmysqldump -h172.24.64.179 -umisc -p123456 app_test apk_files --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/app_test.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/apk_package.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_android --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/apk_package_android.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_java --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/apk_package_java.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_third --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/apk_package_third.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test combination --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/combination.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test inheritance --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/inheritance.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test inheritance --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/inheritance.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test invoke_androguard --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/invoke_androguard.sqlmysqldump -h172.24.64.179 -umisc -p123456 app_test method_androguard --where="apk_name='com.abazai.eightballpool'" > /volume1/testData/sql/method_androguard.sql

(2)改进之后的脚本:

  • 这样更改便于后期的调整,避免改动较多的地方。【也可以看出 变量的作用
  • 注意变量的定义方式:whereState="apk_name='com.abazai.eightballpool'"
  • 以及变量的使用方式:$whereState 或者 ${destPath}
  • 注意在Shell中字符串的拼接方式:${destPath}app_test.sql

#!/bin/bash
whereState="apk_name='com.abazai.eightballpool'"
destPath="/volume1/testData/sql/"

mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_files --where=$whereState >${destPath}app_test.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package --where=$whereState >${destPath}apk_package.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_android --where=$whereState > ${destPath}apk_package_android.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_java --where=$whereState > ${destPath}apk_package_java.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test apk_package_third --where=$whereState > ${destPath}apk_package_third.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test combination --where=$whereState > ${destPath}combination.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test inheritance --where=$whereState > ${destPath}inheritance.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test invoke_androguard --where=$whereState > ${destPath}invoke_androguard.sql
mysqldump -h172.24.64.179 -umisc -p123456 app_test method_androguard --where=$whereState > ${destPath}method_androguard.sql

(3)但是 mysqldump 能力十分有限,比如说条件语句中不能使用Like,OR等关键词。

而这些关键词的识别,是mysql命令的专长。

所以查阅mysql ,得到可以这样使用:

 mysql -e "select * from apk_files where apk_name='com.airkast.KCSFAM'OR apk_name='com.amparosoft.progressivemetronome.free'" -h172.24.64.179 -umisc -p123456 -D app_test


但是我们需要的是把这些东西,导出来,于是可以和mysqldump相结合。



2.运行shell 脚本。

 /bin/sh mysqlOut2.sh

3.移动文件。

   运行完相应的脚本之后,我想去移动文件,这是一系列操作,我想放到一个命令中。

  于是我在窗口输入:

  • && 将多个命令连接在了一起。

rm -r /volume1/共享文件/常用软件/sql/sql && mv /volume1/testData/sql /volume1/共享文件/常用软件/sql && mkdir /volume1/testData/sql

0 0
原创粉丝点击