mysql远程快速导出csv格式数据工具
如需转载,请经本人同意。
之前本人曾经写过一个使用 select ....into outfile原理导出数据的脚本,但该脚本值适用于本地快速导出,并不支持远程服务,故又编写了下面这个支持远程导出的脚本。该脚本支持导出文件检测、数据库信息检查。如果大家有好的建议欢迎留言评论。脚本总体而言比较简单,希望对大家有帮助
脚本语言:python
版本:2.7
#!/usr/bin/python
# -*- coding:UTF- -*-
#@author Jane.Hoo
#@date // from __future__ import division
import os
import MySQLdb
import time
import commands
import logging
import re
import math print '*******************************'
timestamp=time.strftime("%Y%m%d%H%M%S", time.localtime())
logfile='/tmp/myloaddataout.log%s'%timestamp
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='%s'%logfile,
filemode='w')
print '导出日志记录在:%s'%logfile #################################################################################################
#定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
#################################################################################################
#python /cygdrive/c/Users/Jane.Hoo/PycharmProjects/loaddata/MySQLloaddataout.py
db_host='127.0.0.1'
db_user='test'
db_pwd='test'
db='test'
db_port=int('') class Toolloadout:
def __init__(self,pathfile=):
self.pathfile=pathfile #得到数据库连接
def getdbconn(self,DB_HOST=db_host,DB_USER='routeload',DB_PWD='routeload',DB='test01',DB_PORT=''):
logging.debug('%s:%s:%s:%s:%s'%(DB_HOST,DB_USER,DB_PWD,DB,DB_PORT))
conn='unlink'
try:
conn=MySQLdb.connect(host=DB_HOST,user=DB_USER,passwd=DB_PWD,port=int(DB_PORT),db=DB)
logging.info('数据库连接成功')
except MySQLdb.OperationalError,e:
logging.warning('数据库连接失败!%s'%e)
return conn
#关闭数据库连接
def closedbconn(self,conn=):
logging.debug('闭数据库连接')
conn.close()
#检查导出文件
def chekpathfile(self):
pathfile=self.pathfile
check_flag=
iffile_exists=os.path.exists(pathfile)
if iffile_exists==:
check_flag=
logging.info('导出文件已存在!')
else:
path=os.path.split(pathfile)[]
ifpath_exists=os.path.isdir(path)
if ifpath_exists==:
logging.info('%s是有效的路径'%path)
else:
check_flag=
logging.info('%s是无效的路径'%path)
return check_flag if __name__=='__main__':
print '准备导出...'
pathfile=raw_input("请输入导出文件路径:").strip()
cmd_sql=raw_input('请输入要查询的语句:').strip()
c=Toolloadout(pathfile)
pf_check=c.chekpathfile()
if pf_check==:
logging.info('文件路径校验通过')
ifinputdbmsg=raw_input('是否需要自定义数据库连接信息(Y|N)?').strip()
if ifinputdbmsg=='Y':
db_host=raw_input('请输入数据地址:').strip()
db_user=raw_input('请输入用户名:').strip()
db_pwd=raw_input('请输入密码:').strip()
db=raw_input('请输入数据库名:').strip()
db_port=raw_input('请输入数据库端口:').strip()
if db_host=='' or db_user=='' or db_pwd=='' or db=='':
logging.info('自定义数据库输入信息有为空.')
check_flag=
if_port=re.match(r"[0-9]", db_port)
if if_port:
db_port=int(db_port)
else:
db_port=int('')
logging.info('端口格式输入有误,将使用默认端口%s'%db_port)
conn=c.getdbconn(db_host,db_user,db_pwd,db,db_port)
if str(conn)!='unlink':
selectsql="mysql -A %s -h %s -u%s -p%s -P%s -ss -e '%s;' | sed 's/\\t/,/g;s/^//;s/$//;s/\\n//g' >%s"%(db,db_host,db_user,db_pwd,db_port,cmd_sql,pathfile)
print 'querysql:',selectsql
try:
os.system('%s'%selectsql)
except BaseException,e:
logging.info('导出数据过程中报错!%s'%e)
c.closedbconn(conn)
else:
logging.info('失败')
else:
logging.info('文件路径校验不通过,导出结束')
作者:jane.hoo
出处:jane.hoo的博客 http://www.cnblogs.com/janehoo/
[人生不设限,生命不息,折腾不止]
您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。
mysql远程快速导出csv格式数据工具的更多相关文章
- Bash中使用MySQL导入导出CSV格式数据[转]
转自: http://codingstandards.iteye.com/blog/604541 MySQL中导出CSV格式数据的SQL语句样本如下: select * from test_inf ...
- mysql导入导出.csv格式数据
window下导入数据: LOAD DATA INFILE "C:\\1.csv" REPLACE INTO TABLE demo CHARACTER SET gb2312 FIE ...
- mysqldump导出CSV格式及where导出时间范围问题解决
众所周知,mysqldump不但可以导出sql格式,还可以导出csv格式. 导出CSV格式的具体使用如下命令. mysqldump -uroot -ppassword -S /tmp/mysql999 ...
- 学习 MySQL中导入 导出CSV
学习 MySQL中导入 导出CSV http://blog.csdn.net/sara_yhl/article/details/6850107 速度是很快的 导出 select * from t ...
- OAF_文件系列2_实现OAF导出CSV格式文件ExportButton(案例)
20150727 Created By BaoXinjian
- Highcharts使用CSV格式数据绘制图表
Highcharts使用CSV格式数据绘制图表 CSV(Comma-Separated Values,逗号分隔值文本格式)是採用逗号切割的纯文本数据.通常情况下.每一个数据之间使用逗号切割,几个相关数 ...
- 导出CSV格式文件,用Excel打开乱码的解决办法
导出CSV格式文件,用Excel打开乱码的解决办法 1.治标不治本的办法 将导出CSV数据文件用记事本打开,然后另存为"ANSI"编码格式,再用Excel打开,乱码解决. 但是,这 ...
- java导出csv格式文件
导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...
- R语言笔记001——读取csv格式数据
读取csv格式数据 数据来源是西南财经大学 司亚卿 老师的课程作业 方法一:read.csv()函数 file.choose() read.csv("C:\\Users\\Administr ...
随机推荐
- jquery template模版引擎
jTemplates http://jtemplates.tpython.com/ jquery-template https://github.com/codepb/jquery-template ...
- 《On Lisp》第四章第三节图4.3中的prune函数fix
这个函数作者的原意是删除表中test位真的部分,并且表按原样返回. 作者给出的的测试用例如下: (prune #'evenp '(1 2 (3 (4 5) 6) 7 8 (9))) 返回结果是: (1 ...
- Sublime Text 3 汉化小技巧
Sublime Text 3 简体中文汉化包使用方法 1.将下载的sublime_text3汉化包文件解压,得到的Default.sublime-package 文件.打开sublime text 3 ...
- OO.A.D.P
OO/A/D/P 对象和类 三大特征 对象: 对象是面向对象语言的一个极为重要的特点,所有的面向对象语言都有对象的共性. 1. 职责(单一) 2. 属性(数据.可改变的) 3. 函数(行为.方法.业务 ...
- 介绍开源的.net通信框架NetworkComms框架之四 消息边界
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- Window10+VS2015+DevExpress.net 15.1.7完美破解(图)
终于找到一个可用的破解工具了,并更新到最新的组件包DevExpressComponents-15.1.7.15288.exe,先看图 破解方法: 先安装DevExpressUniversalTrial ...
- 初探C++Primer(15.面向对象程序设计)
最近在恶补OOP相关知识,很遗憾学校的课没选上,于是只能上网购进C++Primer一本,开始重学C++之旅... (壮哉我大ZJU,网购半天到货XDD) 学习路线 7.类->13.类设计者的工具 ...
- GTD
这两天坚持GTD,四分象限法管理时间,感觉学习专注度明显提升,一直没完成的马士兵JAVA基础整到第八章了,继续保持,1.13号前争取11章全整完. 3个点支撑起你的职业发展:技术,管理(管理自己.管理 ...
- Masonry控制台打印约束冲突问题解决
不知道你是不是视图的布局也是用的第三方Masonry,在使用中是不是也遇到了控制台约束冲突的警告打印,看下图: 从输出的信息可以知道,有的控件的约束明显重复了设置,所以指出了是哪个控件,重复设置了哪些 ...
- js面向对象编程:if中可以使用那些作为判断条件呢?
作者来源http://www.2cto.com/kf/201407/314978.html搬运 在所有编程语言中if是最长用的判断之一,但在js中到底哪些东西可以在if中式作为判断表达式呢? 例如如何 ...