mysql批量创建数据库 导数据
2009-08-04 14:51
197 查看
由于近来需要从其它机器拉一堆数据到一台机器上做数据分析,由于涉及到数据库比较,数据也不大不小的,要手工一个一倒腾真是累的半死,于是弄了个脚本
实现功能,根据指定文件下的数据库文件命令格式,
str=1234_`date +%y%m%d%H%M`.gz
echo "开始备份..."`date`
mysqldump -uroot -pxxxxxx--quick --add-drop-table --extended-insert qeedoo | gzip > $str
echo "备份完毕..."`date`
这是相关的数据库备份脚本由于名称的有一个特点即_`date +%y%m%d%H%M`.gz从_开始后面的都相同,前面的话有纯数字的组成也有字母跟数字,数字与字母。
因为涉及到mysql的问题,即mysql不能以纯数字的命令一个数据库,所以操作步骤如下:
一、提取相关数据库备份文件的名称
二、以纯数字为前缀的给他加上后缀com
二、创建数据库导入数据
由于以前手工导过数据,但这些数据都没有用了,所以现在需要先批量drop相关库
for i in `cat mysqldata`
do
mysql -u root <<QUERY_SQL
DROP DATABASE IF EXISTS $i;
QUIT
QUERY_SQL
done
从mysqldata文件里取到相关数据库的名,如果存在删掉,记得如果需要保留的数据库需要拿掉不在放在mysqldata文件里,这里面的数据库是show databases 出来的
好了进入正题。
echo "type your data path!"
read path
for sqldata in `ls $path`
gunzip $sqldata
do
str=`echo ${sqldata%_*}` #取_之前的字符串
name=`echo ${sqldata%.*}` #把.gz后缀去掉
echo $str #打印正在处理的数据库
expr $str + 0 1>/dev/null 2>1 #用_之前的字符串进行expr运算
if [ $? -eq 0 ];then #通过判断返回值确认_之前的字符串是否为纯数字
str1=${str}com #为数字时添加后缀com
else
str1=${str}
fi
#进入mysql处理
mysql -u root <<QUERY_SQL
#如果有密码可以用mysql -uroot -pxxxx <<QUERY_SQL
DROP DATABASE IF EXISTS $str1;
create database $str1;
use $str1;
source $path/$name;
QUIT
QUERY_SQL
#echo $$ #打印出正在运行的进程号如果不小心进入了死循环直接kill -9 该进程号就可以了当然也可以用ps -ef过滤出来看
done
记得由于是直接处理字符串的,在进入的path目录里只允许有相关的数据库文件,因为如你在该目录下建了a b之类的该脚本也会例行处理
实现功能,根据指定文件下的数据库文件命令格式,
str=1234_`date +%y%m%d%H%M`.gz
echo "开始备份..."`date`
mysqldump -uroot -pxxxxxx--quick --add-drop-table --extended-insert qeedoo | gzip > $str
echo "备份完毕..."`date`
这是相关的数据库备份脚本由于名称的有一个特点即_`date +%y%m%d%H%M`.gz从_开始后面的都相同,前面的话有纯数字的组成也有字母跟数字,数字与字母。
因为涉及到mysql的问题,即mysql不能以纯数字的命令一个数据库,所以操作步骤如下:
一、提取相关数据库备份文件的名称
二、以纯数字为前缀的给他加上后缀com
二、创建数据库导入数据
由于以前手工导过数据,但这些数据都没有用了,所以现在需要先批量drop相关库
for i in `cat mysqldata`
do
mysql -u root <<QUERY_SQL
DROP DATABASE IF EXISTS $i;
QUIT
QUERY_SQL
done
从mysqldata文件里取到相关数据库的名,如果存在删掉,记得如果需要保留的数据库需要拿掉不在放在mysqldata文件里,这里面的数据库是show databases 出来的
好了进入正题。
echo "type your data path!"
read path
for sqldata in `ls $path`
gunzip $sqldata
do
str=`echo ${sqldata%_*}` #取_之前的字符串
name=`echo ${sqldata%.*}` #把.gz后缀去掉
echo $str #打印正在处理的数据库
expr $str + 0 1>/dev/null 2>1 #用_之前的字符串进行expr运算
if [ $? -eq 0 ];then #通过判断返回值确认_之前的字符串是否为纯数字
str1=${str}com #为数字时添加后缀com
else
str1=${str}
fi
#进入mysql处理
mysql -u root <<QUERY_SQL
#如果有密码可以用mysql -uroot -pxxxx <<QUERY_SQL
DROP DATABASE IF EXISTS $str1;
create database $str1;
use $str1;
source $path/$name;
QUIT
QUERY_SQL
#echo $$ #打印出正在运行的进程号如果不小心进入了死循环直接kill -9 该进程号就可以了当然也可以用ps -ef过滤出来看
done
记得由于是直接处理字符串的,在进入的path目录里只允许有相关的数据库文件,因为如你在该目录下建了a b之类的该脚本也会例行处理
相关文章推荐
- [Wondgirl] ThinkPHP-json数据接口的创建(二)连接数据库和json数据接口的创建
- SQL Server创建数据库和数据表的相关约束实现方法
- MySQL如何创建数据库并查询数据类型
- 创建数据库快照并恢复数据
- MySQL01 --创建数据库&插入数据
- 采用dmp格式将分区表数据导入新数据库时,如果新数据库中没有相同的分区时会报错,提示创建所有的分区
- php+sql创建本地项目详细步骤3——查看与删除数据库数据
- 创建数据库与查询数据
- vs2010/vs2012 创建ADO.NET实体数据模型时选择数据库跳出
- iOS学习之sqlite的创建数据库,表,插入查看数据
- Oracle如何实现创建数据库、备份数据库及数据导出导入操作
- iOS学习之sqlite的创建数据库,表,插入查看数据
- mysql创建数据库、用户及导入数据
- 批量创建数据库和批量数据恢复
- MySQL入门--数据表的创建、显示指定数据库中的所有数据表
- Oracle 创建数据库及导入数据
- IOS 之使用FMDB进行SQLite数据库操作——表的创建与修改,以及数据的增删改查和多线程操作数据库
- Sqlite 常用函数封装:修改密码,创建数据库、获取表段、字段,取值、插入、删除数据、执行Sqlite指令
- SQL Server 不清空数据,修改数据库字段、结构,阻止保存要求重新创建表的更改
- Android 数据库创建字段时的数据类型