1. import json
  2. import psycopg2
  3. import sys
  4.  
  5. conn = psycopg2.connect(dbname='dev', host='127.0.0.1',
  6. port='', user='master', password='')
  7. cur = conn.cursor()
  8.  
  9. column_names = None
  10.  
  11. def execute(sql):
  12. cur.execute(sql)
  13. conn.commit()
  14.  
  15. def build_value(item):
  16. global column_names
  17. column_names = []
  18.  
  19. fields = []
  20. if tablename.startswith('sold_'):
  21. keylist = ['soldUrl', 'country', 'category0', 'itemNumber', 'price', 'quantity', 'Date_of_Purchase', 'ts',
  22. 'ts_string']
  23. else:
  24. keylist = None
  25. for key in sorted(item.keys()) if not keylist else keylist:
  26. field = item.get(key, None)
  27. if isinstance(field, str):
  28. field = field.replace("'", "''").replace("\\", "")
  29.  
  30. column_names.append(key)
  31.  
  32. if key in ['page', 'index']:
  33. fields.append(str(field))
  34. else:
  35. fields.append("'{}'".format(field))
  36.  
  37. return '({})'.format(', '.join(fields))
  38.  
  39. if __name__ == '__main__':
  40.  
  41. data_file = sys.argv[1]
  42. tablename = sys.argv[2]
  43.  
  44. values = []
  45. for line in open(data_file):
  46. item = json.loads(line)
  47.  
  48. values.append(build_value(item))
  49.  
  50. if len(values) == 10000:
  51. sql = 'insert into {}({}) values {};'.format(tablename, ', '.join(column_names), ', '.join(values))
  52. execute(sql)
  53.  
  54. values.clear()
  55.  
  56. execute('insert into {}({}) values {};'.format(tablename, ', '.join(column_names), ', '.join(values)))

json2mysql的更多相关文章

随机推荐

  1. 自己实现ArrayList与LinkedList类

    ArrayList与LinkedList的底层实现 ArrayList内部由数组实现,LinkedList内部由链表实现. 自己动手实现ArrayList与LinkedList中一些常用方法 Arra ...

  2. sql中的 IF 条件语句的用法

    IF 表达式 IF( expr1 , expr2 , expr3 ) expr1 的值为 TRUE,则返回值为 expr2 expr1 的值为FALSE,则返回值为 expr3 如下: SELECT ...

  3. 5.15 pymysql 模块

    pymysql 模块 安装 pip3 install pymysql 链接,执行sql,关闭(游标) import pymysql user= input('用户名:>>').strip( ...

  4. scrapy之使用LinkExtractor提取链接

    一.概述: 在页面含有少量链接时,使用selector来提取信息就可以,但如果链接特别多时,就需要用LinkExtractor来提取. 二.LinkExtractor构造器的各个参数: 1.allow ...

  5. NOI真题记录

    NOI2001 食物链,拓展域并查集. 炮兵阵地,棋盘状压DP. NOI2002 银河英雄传说,kruskal重构树/带权并查集. 贪吃的九头龙,树形DP. NOI2003 逃学的小孩,树形DP,二次 ...

  6. js的几大重点

    闭包,:作用域(函数创建),上下文环境(函数执行,会销毁) 匿名函数,:没有函数名的函数,function(){} 自执行函数,:立即调用的匿名函数,(function(){})() 原型链,:继承的 ...

  7. javax.websocket.DeploymentException: Multiple Endpoints may not be deployed to the same path [/websocket/{sid}] : existing endpoint was class com.sanyi.qibaobusiness.framework.webSocket.WebSocketServe

    报错: javax.websocket.DeploymentException: Multiple Endpoints may not be deployed to the same path [/w ...

  8. fstat函数

    一.函数原型 #include<sys/stat.h> #include<unistd.h> int fstat(int fildes,struct stat *buf); 返 ...

  9. CentOS 7 破解root密码

    破解root密码必须在本机上进行,如果使用SecureCRT  Xshell等远程工具修改是会出错的! A0 哥们儿,忘记密码了,怎么办??? A1.进入启动界面: A2. 按‘e’键进入编辑模式 A ...

  10. nginx php程序 文件上传大小限制

    关于 PHP 程序上传限制 更改 php.ini 配置文件 upload_max_filesize = 5M post_max_size = 16M 通过 nginx 环境限制上传大小: 可以在 ht ...