遇到一个尴尬的问题,SSMS的GridView对于大字段的(varchar(max),text之类的),支持不太友好的,
超过8000个长度之外的字符,SSMS的表格是显示不出来的(当然也就看不到了),也是无法直接导出来的(超过8000个之外的字符的)
这种问题在别人遇到来求助的时候,是不可忍受的,于是快速用Python写了一个导出数据到Excel的功能,
最主要的是可以导出大字段的内容,且方便简洁,人畜无害,绿色环保,不太喜欢SSMS那种下一步下一步……的操作。那些在SSMS中无法显示出来的字段,这下可以显出原形了。

1,必选参数是服务器地址和sql语句,如果sql语句没有带库名的话,那么必须传入数据库的名字,否则默认是master库,因此sql尽量带库名吧
2,导出路径是C:\Windows\Temp\,导出完成后自动打开,方便查看,另存
3,根据sql语句,导出完成的查询结果,第一行是字段名,其余是查询结果
4,依赖于xlsxwriter这个包
5,没有太严格的参数校验以及数据库账号密码支持,有需要的自己改造

import os
import re
import time
import pymssql
import xlsxwriter
import argparse def get_data_from_db(host='127.0.0.1',server='mssql',port=1433,database='master',sql_stament=''):
conn = pymssql.connect(host=host, server=server,port=port, database=database,as_dict=True, autocommit=True)
cursor = conn.cursor()
# 简单的判断,别尼玛执行了truncate啥的
if len(sql_statment)<6 or not (re.match(r'^select',sql_statment.lstrip())):
print('sql statment is error,exit……')
exit(1)
try:
cursor.execute(sql_stament)
result = cursor.fetchall()
except:
raise
finally:
cursor.close()
conn.close()
return result def export_to_excel(result):
current_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
workbook = xlsxwriter.Workbook('C:\\Windows\\Temp\\'+current_time+'_temp.xlsx')
worksheet = workbook.add_worksheet("sheet1")
# head row
col = 0
for key in result[0].keys():
worksheet.write(0, col, key)
col = col+1
# data row
row = 1
col = 0
for dict in result:
for key in dict:
worksheet.write(row, col, str(dict[key]))
col = col + 1
col = 0
row += 1
workbook.close()
os.startfile('C:\\Windows\\Temp\\'+current_time+'_temp.xlsx') if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--host",required=True, type=str,help="host name or ip")
parser.add_argument("--db",required=False, type=str,help="database name")
parser.add_argument("--sql", required=True, type=str, help="sql statment")
args = parser.parse_args()
host = args.host
database = args.db
if not database:
database='master'
sql_statment = args.sql
print('executing sql……')
result = get_data_from_db(host = host,database = database,sql_stament =sql_statment)
print('exporting data……')
export_to_excel(result) # example
# python export_data_to_excel.py --host "127.0.0.1" --sql "select * from tempdb.dbo.Test"

在10W级别以下,速度还是可以的,这是个demo

python快速导出sql语句(mssql)的查询结果到Excel,解决SSMS无法加载大字段的问题的更多相关文章

  1. 使用传入的总记录数实现一条sql语句完成分页查询

    使用传入的总记录数实现一条sql语句完成分页查询     问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...

  2. 利用excel办公软件快速拼凑sql语句

    日常工作中经常会收到excel整理好的部门或者人员等数据信息并需要批量更新或者插入到数据库中,常用的办法有导入.脚本拼凑执行等,今天我介绍直接使用excel快速拼凑sql语句的方法 1.update批 ...

  3. PowerDesigner 创建表格及导出SQL语句

    PowerDesigner 创建表格及导出SQL语句   目的:提高数据库创建表格效率 测试数据库:orcale 1.新建物理模型. 右键点击workplace,new一个物理模型并指定数据库. 2. ...

  4. mongodb 跟踪SQL语句及慢查询收集

    有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行  ./mongostat -port 端口号  ...

  5. [转]在Excel中使用SQL语句实现精确查询

    本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...

  6. 利用powerdesigner创建表模型后导出sql语句方法,以及报错 Generation aborted due to errors detected during the verification of the model.的解决办法

    今天用powerdesigner建了表模型,下面先说一下导出sql语句的步骤. 1.选项 2. 然后就报错了,下面说解决办法,很简单. 你没看错,把模型检查的√去掉就行了~~ 导出表名不带双引号的设置 ...

  7. 使用excel中的数据快速生成sql语句

    在小公司的话,总是会有要开发去导入历史数据(数据从旧系统迁移到新系统上)的时候.这个时候,现场实施或客户会给你一份EXCEL文档,里面包含了一些别的系统上的历史数据,然后就让你导入到现在的系统上面去. ...

  8. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

  9. Python导出sql语句结果到Excel

    本文档是因为每周需要统计线上数据库中客户新增资源,手动执行实在是麻烦,就写了个脚本导出到Excel,顺便发一封邮件. (当然这不是线上的真实脚本,不过根据个人需求稍微修改下,还是可以直接用的.拿去不谢 ...

随机推荐

  1. jQuery操作页面的元素

    主要有添加,替换,删除,清空三种方式: 添加又分为,在之前添加,在之后添加,在元素外之前添加,在元素外之后添加.每个添加方式又有俩种方法(效果一模一样): 俩种方法区添加,在原内容之后: p.appe ...

  2. ACM-ICPC 2018 焦作赛区网络预赛J题 Participate in E-sports

    Jessie and Justin want to participate in e-sports. E-sports contain many games, but they don't know ...

  3. ZOJ 3195 Design the city (LCA 模板题)

    Cerror is the mayor of city HangZhou. As you may know, the traffic system of this city is so terribl ...

  4. idea 上传svn忽略文件

    在idea最下面找到Version Control 默认我们svn提交的文件都在Default ChangeList中 我们创建一个新的ChangeList

  5. 对 HTML 语义化的理解

    简述一下你对 HTML 语义化的理解? 用正确的标签做正确的事情. html 语义化让页面的内容结构化,结构更清晰,便于对浏览器.搜索引擎解析; 即使在没有样式 CSS 情况下也以一种文档格式显示,并 ...

  6. JS 判断移动端 ,跳转

    function SetPlatForm() { var JumpUrl = ""; var sUserAgent = navigator.userAgent.toLowerCas ...

  7. 2019年终总结:10场演讲、内推20人、公众号2万粉丝、Code Runner 1000万下载

    2019年是值得记录的一年,成长许多,也收获许多. 做了 10 场大会的技术演讲,成功内推 20 人拿到微软 Offer,知乎 Live 2000 听众,公众号 2 万粉丝,GitHub 2万 sta ...

  8. 《Java基础知识》Java数据类型以及变量的定义

    Java 是一种强类型的语言,声明变量时必须指明数据类型.变量(variable)的值占据一定的内存空间.不同类型的变量占据不同的大小. Java中共有8种基本数据类型,包括4 种整型.2 种浮点型. ...

  9. javascript数据结构

    学习数据结构非常重要.首要原因是数据结构和算法可以很高效的解决常见问题.作为前端,通过javascript学习数据结构和算法要比学习java和c版本容易的多. 在讲数据结构之前我们先了解一下ES6的一 ...

  10. FastJson中JSONString与各个对象的的转换关系及API示例

    前言 JSON作为一种轻量级的数据交换格式,在我们日常的开发中使用十分广泛,就Java后端的开发工作中,JSON字符串与Java对象之间相互转换是常常遇到的操作. 虽然平时用到的挺多的,但是因为用于J ...