import json
import psycopg2
import sys conn = psycopg2.connect(dbname='dev', host='127.0.0.1',
port='', user='master', password='')
cur = conn.cursor() column_names = None def execute(sql):
cur.execute(sql)
conn.commit() def build_value(item):
global column_names
column_names = [] fields = []
if tablename.startswith('sold_'):
keylist = ['soldUrl', 'country', 'category0', 'itemNumber', 'price', 'quantity', 'Date_of_Purchase', 'ts',
'ts_string']
else:
keylist = None
for key in sorted(item.keys()) if not keylist else keylist:
field = item.get(key, None)
if isinstance(field, str):
field = field.replace("'", "''").replace("\\", "") column_names.append(key) if key in ['page', 'index']:
fields.append(str(field))
else:
fields.append("'{}'".format(field)) return '({})'.format(', '.join(fields)) if __name__ == '__main__': data_file = sys.argv[1]
tablename = sys.argv[2] values = []
for line in open(data_file):
item = json.loads(line) values.append(build_value(item)) if len(values) == 10000:
sql = 'insert into {}({}) values {};'.format(tablename, ', '.join(column_names), ', '.join(values))
execute(sql) values.clear() execute('insert into {}({}) values {};'.format(tablename, ', '.join(column_names), ', '.join(values)))

json2mysql的更多相关文章

随机推荐

  1. 【BZOJ2876】【Noi2012】骑行川藏 拉格朗日乘法

    题目描述 给你 \(n,E,s_i,k_i,v_i'\),要求在 \[ \sum_{i=1}^nk_i{(v_i-v_i')}^2s_i\leq E \] 的前提下最小化 \[ \sum_{i=1}^ ...

  2. Linux-安装Windows字体

    Linux 服务器安装Windows字体 直接上步骤: Windows字体包下载链接:https://pan.baidu.com/s/1ks9a70snHo02CTuqTrQhhg  提取码:7aw5 ...

  3. Zsh安装及常用操作

    Zsh因为插件丰富而闻名,但是 zsh 的默认配置及其复杂繁琐,让人望而却步,直到有了oh-my-zsh这个开源项目,让zsh配置降到0门槛.而且它完全兼容 bash. 安装Zsh: [root@lo ...

  4. 关于QQ农场牧场等曾经流行的游戏的一些见解

    大概在上上周,我偶然间打开QQ空间玩了一会QQ农牧场,玩完之后我在想,在那个年代他们为什么那么红? 我觉得可能有以下几点: 1:凭借着QQ海量的用户,可以迅速推广 2:迎合了人们爱占小便宜的心理,不过 ...

  5. Beamer制作索引

    \documentclass{beamer} \usepackage{multicol} \usepackage{makeidx} \newenvironment{theindex}{% \let\i ...

  6. [数分提高]2014-2015-2第6教学周第1次课讲义 3.3 Taylor 公式

    1. (Taylor 公式). 设 $f^{(n)}$ 在 $[a,b]$ 上连续, $f^{(n+1)}$ 在 $(a,b)$ 内存在, 试证: $ \forall\ x,x_0\in [a,b], ...

  7. Matplotlib画图详解

    from matplotlib import pyplot as plt #调节图形大小,宽,高 plt.figure(figsize=(6,9)) #定义饼状图的标签,标签是列表 labels = ...

  8. linux内存 free命令 buffer cache作用

    free命令用于查看linux内存使用情况 #free shared:用于进程之间相互共享数据. Used:已使用内存. total:内存总量. free:未使用的内存. available:开启一个 ...

  9. H5——弹性盒

    [flex 弹性盒布局] * 1.给父容器添加display:flex/inline-flex;属性 * 2.父容器可以使用的属性值有: * ① flex-direction 属性决定主轴的方向(即项 ...

  10. vue之生命周期函数例子

    执行代码看生命周期函数的执行顺序 <!-- 根组件 --> <!-- vue的模板内,所有内容要被一个根节点包含起来 App.vue --> <template> ...