Python制作数据导入导出工具


Posted in Python onJuly 31, 2015

python 2.6编写,自己瞎写的,备用

'''
  Export and Import ElasticSearch Data.
  Simple Example At __main__
  @author: wgzh159@163.com
  @note: uncheck consistency of data, please do it by self
'''
 
import json
import os
import sys
import time
import urllib2
 
reload(sys)
sys.setdefaultencoding('utf-8') # @UndefinedVariable
 
class exportEsData():
  size = 10000
  def __init__(self, url,index,type):
    self.url = url+"/"+index+"/"+type+"/_search"
    self.index = index
    self.type = type
  def exportData(self):
    print("export data begin...")
    begin = time.time()
    try:
      os.remove(self.index+"_"+self.type+".json")
    except:
      os.mknod(self.index+"_"+self.type+".json")
    msg = urllib2.urlopen(self.url).read()
    print(msg)
    obj = json.loads(msg)
    num = obj["hits"]["total"]
    start = 0
    end = num/self.size+1
    while(start<end):
      msg = urllib2.urlopen(self.url+"?from="+str(start*self.size)+"&size="+str(self.size)).read()
      self.writeFile(msg)
      start=start+1
    print("export data end!!!\n\t total consuming time:"+str(time.time()-begin)+"s")
  def writeFile(self,msg):
    obj = json.loads(msg)
    vals = obj["hits"]["hits"]
    try:
      f = open(self.index+"_"+self.type+".json","a")
      for val in vals:
        a = json.dumps(val["_source"],ensure_ascii=False)
        f.write(a+"\n")
    finally:
      f.flush()
      f.close()
 
class importEsData():
  def __init__(self,url,index,type):
    self.url = url+"/"+index+"/"+type
    self.index = index
    self.type = type
     
  def importData(self):
    print("import data begin...")
    begin = time.time()
    try:
      f = open(self.index+"_"+self.type+".json","r")
      for line in f:
        self.post(line)
    finally:
      f.close()
    print("import data end!!!\n\t total consuming time:"+str(time.time()-begin)+"s")
  def post(self,data):
    req = urllib2.Request(self.url,data,{"Content-Type":"application/json; charset=UTF-8"})
    urllib2.urlopen(req)
 
if __name__ == '__main__':
  '''
    Export Data
    e.g.
              URL          index    type
    exportEsData("http://10.100.142.60:9200","watchdog","mexception").exportData()
     
    export file name: watchdog_mexception.json
  '''
  #exportEsData("http://10.100.142.60:9200","watchdog","mexception").exportData()
  exportEsData("http://10.100.142.60:9200","watchdog","mexception").exportData()
   
   
  '''
    Import Data
     
    *import file name:watchdog_test.json  (important)
          "_" front part represents the elasticsearch index
          "_" after part represents the elasticsearch type
    e.g.
              URL          index    type
    mportEsData("http://10.100.142.60:9200","watchdog","test").importData()
  '''
  #importEsData("http://10.100.142.60:9200","watchdog","test").importData()
  importEsData("http://10.100.142.60:9200","watchdog","test").importData()

以上所述就是本文的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
python基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
Python使用functools实现注解同步方法
Feb 06 Python
django 多数据库配置教程
May 30 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
使用python实现对元素的长截图功能
Nov 14 Python
Python命令行click参数用法解析
Dec 19 Python
tornado+celery的简单使用详解
Dec 21 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
简单理解Python中的装饰器
Jul 31 #Python
python简单分割文件的方法
Jul 30 #Python
Python读取网页内容的方法
Jul 30 #Python
python查看FTP是否能连接成功的方法
Jul 30 #Python
python如何实现excel数据添加到mongodb
Jul 30 #Python
python学习之第三方包安装方法(两种方法)
Jul 30 #Python
Python实现的Excel文件读写类
Jul 30 #Python
You might like
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
php使用GeoIP库实例
2014/06/27 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
Python中的多行注释文档编写风格汇总
2016/06/16 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python 实现表情识别
2020/11/21 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
爱国演讲稿400字
2014/05/07 职场文书
节能环保口号
2014/06/12 职场文书
2014年纪检工作总结
2014/11/12 职场文书
离婚财产分割协议书
2015/08/11 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
浅谈Python协程asyncio
2021/06/20 Python
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang