如何快速导入百万mysql数据库导入导出到mysql.现在我的处理方式是读取原mysql数据库导入导出表的所

shell批量导入MySQL数据库,批量删除数据库_数据库技术_Linux公社-Linux系统门户网站
你好,游客
shell批量导入MySQL数据库,批量删除数据库
来源:Linux社区&
作者:rainysia
因为项目协同开发, 同事发了一个项目的sql文件过来, 打开一看是个目录, 里面有上百个数据库.每个数据库作为一个单独的文件.
每个sql文件里面都有
CREATE DATABASE& IF NOT EXISTS `XXXX`USE `XXXX`;
他可以直接用mysql_workbench 6以上的版本直接导入文件夹的方式来导入多个sql文件. 但是在我的服务器上不可能为了批量导这个sql单独装个GUI的workbench.
于是写个shell吧, 改里面的host,username和password为你对应的即可.
dbname这里,默认是sample, mysql里面的sample表. 实际数据不是导入到这里面的, 因为我要导入的sql文件里面都已经有了创建db. 如果你是要导入到某一个数据库的多个表, 可以修改dbname为你对应的数据库名
#!/bin/bash#author& &
rainysia &&#date& & &
set -eLC_ALL=CLANG=Cunset TZTZBase=$(LC_ALL=C TZ=UTC0 date -R)UTdate=$(LC_ALL=C TZ=UTC0 date -d "$TZBase")TZdate=$(unset TZ ; LANG=C date -d "$TZBase")
file_path="/home/db/test/"& & & & & & & #要导入的sql文件夹host="192.168.85.123"& & & & & & & & &
#要导入的mysql主机username="dbroot"& & & & & & & & & & &
#mysql的用户名password="db1t#2w$3r@4#t"& & & & & & &
#mysql的密码dbname="sample"& & & & & & & & & & & &
#mysql的数据库名now=$(date "+%s")& & & & & & & & & & &
mysql_source(){& & for file_name in `ls -A $1`& & do& & & & seg_start_time=$(date "+%s")& & & & if [ -f "$1$file_name" ];then& & & & & & command="source $1$file_name"& & & & & & mysql -h${host} -u${username} -p${password} ${dbname} -e "$command"& & & & & & echo "source:" \"$1$file_name\" "is ok, It takes " `expr $(date "+%s") - ${seg_start_time}` " seconds"& & & & fi& & done
& & echo "All sql is done! Total cost: " `expr $(date "+%s") - ${now}` " seconds"}echo "Universal Time is now:& $UTdate."echo "Local time is now:& & & $TZdate."mysql_source $file_path
root@debian:/home/sh# ./mysql_source.sh Universal Time is now:& Fri Nov 14 03:10:49 UTC 2014.Local time is now:& & & Fri Nov 14 11:10:49 CST 2014.source: "/home/db/test/hml2.sql" is ok, It takes& 18& secondssource: "/home/db/test/hml3.sql" is ok, It takes& 19& secondssource: "/home/db/test/hml4.sql" is ok, It takes& 18& secondsAll sql is done! Total costs:& 55& seconds
接着发现可以导入了, 然后同事又需要重装某个app, 需要删除其中某个数据库下的所有表. 因为她权限不够, 不能够直接删除数据库, 只能一个一个手动drop table. 但是有2000多个table.
本来打算使用
SELECT CONCAT('DROP TABLE IF EXISTS ', table_name, ';') FROM& information_schema.tables WHERE table_schema='cs_china_111数据库名';
的方式来删除所有table, 发现没有生效.
于是还是还是使用上面的shell. 把路径随便换个, 现在先去把需要drop的table的sql给写出来.
先去导出这个数据库,在终端下使用mysqldump dbroot是我的数据库用户名, cs_china_1111是我要导出的数据库, -d -add-drop-table 是不导出数据只导出结构
#mysqldump -udbroot -p cs_china_1111 -d --add-drop-table& & cs_china_1111.sql
然后使用grep来过滤一次, 因为导出的sql里面含有了drop table
#find ./ -name "cs_china_1111.sql" | xargs grep "DROP TABLE IF" & cs_china_1111_drop_table.sql
接下来用之前的shell, 把dbname 改成需要删除的数据库名, 运行一下即可.
--------------------------------------分割线 --------------------------------------
14.04下安装MySQL
《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF
Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL
Ubuntu 14.04下搭建MySQL主从服务器
Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群
Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb
MySQL-5.5.38通用二进制安装
--------------------------------------分割线 --------------------------------------
本文永久更新链接地址:
相关资讯 & & &
& (08/14/:08)
& (04/23/:47)
& (04/03/:12)
& (02/01/:36)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款如何把Excel导入mysql数据表的方法详解-mysql教程-数据库-壹聚教程网如何把Excel导入mysql数据表的方法详解
把Excel导入mysql数据表其实是一件非常的简单的事情了,我们可以通过多种方法来实现了,下面我们来看一些关于小编整理的把Excel导入mysql数据表的方法了。
方法一把Excel导入mysql数据表,首先新建数据表,新建字段,字段数量和excel的表格列数量保持一致。然后把Excel文件另存为csv或者txt文本文件放在桌面上面然后执行如下命令:一:保存为csv导入方法load data local infile 'C:\\Users\\xwidea\\Desktop\\areaid_v.csv' into table 数据表名称 fields terminated by ','二:保存为txt文本文件导入方法load data local infile 'C:\\Users\\xwidea\\Desktop\\areaid_v.txt' into table 数据表名称 fields terminated by '\t'方法二,利用程序如phpPHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader 说明: PHP将EXCEL导入MYSQL的测试环境:MYSQL采用utf8编码.导入EXCEL文档是xls格式,经过测试,xlsx 格式[excel 2007]也OK.测试环境:MYSQL数据库采用utf8编码.导入EXCEL文档是xls格式,经过测试,xlsx 格式[excel 2007]也OK.文中红色标注为需要注意的地方,请替换成你配置好的数据,如数据库配置等。运行实现导入。以下是我贴出的详细代码,其中test.php为我写的测试文件,reader.php和oleread.inc文件是从上面提供的网址中下载的。1. test.php以下为引用的内容:require_once 'reader.php'// ExcelFile($filename, $encoding);$data = new Spreadsheet_Excel_Reader();// Set output Encoding.$data-&setOutputEncoding('gbk');//”data.xls”是指要导入到mysql中的excel文件$data-&read('data.xls');@ $db = mysql_connect('localhost', 'root', ?') ordie(&Could not connect to database.&);//连接数据库mysql_query(&set names 'gbk'&);//输出中文mysql__db('mydb'); //选择数据库error_reporting(E_ALL ^ E_NOTICE);for ($i = 1; $i &= data-=&&&sheets[0]['numRows']; $i++) {//以下注释的打印excel表数据/*for ($j = 1; $j &= data-=&&&sheets[0]['numCols']; $j++) {echo &&&.$data-&sheets[0]['cells'][$i][$j].&&,&;}echo &n&;*///以下代码是将excel表数据【3个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧!$sql = &INSERT INTO test VALUES('&.$data-&sheets[0]['cells'][$i][1].&','&.$data-&sheets[0]['cells'][$i][2].&','&.$data-&sheets[0]['cells'][$i][3].&')&;echo $sql.''$res = mysql_query($sql);}?&
上一页: &&&&&下一页:相关内容

我要回帖

更多关于 excel导入mysql数据库 的文章

 

随机推荐