shell批量导入MySQL数据库,批量删除数据库
他可以直接用mysql_workbench 6以上的版本直接导入文件夹的方式来导入多个sql文件. 但是在我的服务器上不可能为了批量导这个sql单
因为项目协同开发, 同事发了一个项目的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 2014-11-14 10:26:27
set -e
LC_ALL=C
LANG=C
unset TZ
TZBase=$(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 seconds
source: "/home/db/test/hml3.sql" is ok, It takes 19 seconds
source: "/home/db/test/hml4.sql" is ok, It takes 18 seconds
All 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 改成需要删除的数据库名, 运行一下即可.
--------------------------------------分割线 --------------------------------------
Ubuntu 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通用二进制安装
--------------------------------------分割线 --------------------------------------
本文永久更新链接地址:
,
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

InnoDB的全文搜索功能非常强大,能够显著提高数据库查询效率和处理大量文本数据的能力。1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

是的,可以在 Windows 7 上安裝 MySQL,雖然微軟已停止支持 Windows 7,但 MySQL 仍兼容它。不過,安裝過程中需要注意以下幾點:下載適用於 Windows 的 MySQL 安裝程序。選擇合適的 MySQL 版本(社區版或企業版)。安裝過程中選擇適當的安裝目錄和字符集。設置 root 用戶密碼,並妥善保管。連接數據庫進行測試。注意 Windows 7 上的兼容性問題和安全性問題,建議升級到受支持的操作系統。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

聚集索引和非聚集索引的區別在於:1.聚集索引將數據行存儲在索引結構中,適合按主鍵查詢和範圍查詢。 2.非聚集索引存儲索引鍵值和數據行的指針,適用於非主鍵列查詢。
