一个把json数据批量插入SQL SERVER 的Python脚本

原创 2017年08月24日 11:37:30

这是一个把json数据批量插入SQL SERVER 的Python脚本
本文参考了pymssql的官方文档
http://www.pymssql.org/en/stable/pymssql_examples.html


#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import pymssql
import json
 
DB_SETTINGS = {'host''127.0.0.1',
               'port''1433',
               'user''sa',
               'password''password',
               'database''test'}
 
class SQLSERVER:
    """database"""
 
    def __init__(self, settings_):
        """initial db"""
        self.conn = pymssql.connect(**settings_)
        self.cur = self.conn.cursor()
 
    def exec_many(self, sql_str, data_):
        self.cur.executemany(sql_str, data_)
        self.conn.commit()
 
    def exec_sql(self, sql_str):
        self.cur.execute(sql_str)
        ret = self.cur.fetchall()
        return ret
 
    def close(self):
        self.cur.close()
        self.conn.close()
 
 
json_data = """
[
  {
    "Indicator":"Life expectancy at birth (years)",
    "PUBLISH STATES":"Published",
    "Year":1990,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Both sexes",
    "Display Value":77,
    "Numeric":77.00000,
    "Low":"",
    "High":"",
    "Comments":""
  },
  {
    "Indicator":"Life expectancy at birth (years)",
    "PUBLISH STATES":"Published",
    "Year":2000,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Both sexes",
    "Display Value":80,
    "Numeric":80.00000,
    "Low":"",
    "High":"",
    "Comments":""
  },
  {
    "Indicator":"Life expectancy at age 60 (years)",
    "PUBLISH STATES":"Published",
    "Year":2012,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Female",
    "Display Value":28,
    "Numeric":28.00000,
    "Low":"",
    "High":"",
    "Comments":""
  },
  {
    "Indicator":"Life expectancy at age 60 (years)",
    "PUBLISH STATES":"Published",
    "Year":2000,
    "WHO region":"Europe",
    "World Bank income group":"High-income",
    "Country":"Andorra",
    "Sex":"Both sexes",
    "Display Value":23,
    "Numeric":23.00000,
    "Low":"",
    "High":"",
    "Comments":""
  }
]
"""
 
db = SQLSERVER(DB_SETTINGS)
 
items = json.loads(json_data)
 
# with open(r'd:\temp\source.json', 'r') as json_file:    # 如果从文件中载入数据
#    items = json.load(json_file)
 
fields = ("Indicator""PUBLISH STATES""Year""WHO region""World Bank income group",
          "Country""Sex""Display Value""Numeric""Low""High""Comments")
 
sql = 'INSERT INTO table_name VALUES (%s, %s, %d, %s, %s, %s, %s, %d, %f, %s, %s, %s);'
 
data = [tuple(item[field] for field in fields) for item in items]
db.exec_many(sql, data)
 
db.close()


【SQL Server 批量插入数据】

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量...
  • heyangyi_19940703
  • heyangyi_19940703
  • 2016年07月21日 12:43
  • 1790

批量高效向sqlserver中插入数据

原文:http://blog.csdn.net/tjvictor/article/details/4360030  表值参数是SQL Server 2008新特性,简称TVPs   代...
  • zy0421911
  • zy0421911
  • 2016年09月13日 11:47
  • 1345

SQL Server 批量插入数据的两种方法

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量...
  • ycl295644
  • ycl295644
  • 2015年06月06日 13:53
  • 1984

Sql Server 2012批量处理注意!!

SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过...
  • lglgsy456
  • lglgsy456
  • 2014年08月12日 10:07
  • 435

java 高效批量插入 sqlserver 数据库

@Test public void clockingIn_Img() throws Exception{ DbJdbc idb = DbMaster.getIDB("JXT"); List ...
  • longtingjing
  • longtingjing
  • 2016年10月02日 19:46
  • 4473

sql server中表数据生成insert into插入语句

在导出表生成脚本时很想把表里面的数据也全部生成脚本,这种感觉不知道大家有木有,反正小编经常这样搞,废话补多少,分享两个方法实现。  1利用工具,现在已经是工具的时代,喝茶扯淡分分钟把活干完的快节奏中,...
  • list_123456
  • list_123456
  • 2017年08月31日 22:48
  • 165

SqlSever 数据库批量备份&还原 脚本

批量备份脚本 Use master GO /*=================Usp_BackUp_DataBase======================== =====BackUp S...
  • u012320991
  • u012320991
  • 2017年03月12日 10:20
  • 1636

批量插入记录,遇到重复记录则为自动更新

在插入大量数据时可能同时遇到两个问题: 如果每条更新执行一次sql性能很低,也容易造成阻塞; 批量插入时又有可能遇到主键 或者 唯一索引重复的问题,导致整个批量插入失败 使用 ON D...
  • rj042
  • rj042
  • 2016年01月22日 10:50
  • 3519

几种数据库的大数据批量插入

以下多篇文章介绍了批量插入的方式,在此做部分转载: http://www.cnblogs.com/netuml/p/3719298.html  几种数据库的大数据批量插入 http://z...
  • kan6_8
  • kan6_8
  • 2016年08月03日 11:08
  • 3552

Sql server 大数据量插入速度慢或丢失数据解决办法

Sql server 大数据量插入速度慢或丢失数据解决办法
  • li_ser
  • li_ser
  • 2014年06月09日 14:56
  • 3420
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个把json数据批量插入SQL SERVER 的Python脚本
举报原因:
原因补充:

(最多只允许输入30个字)