一个通用的脚本,处理MySQL WorkBench导出表的JSON数据进SQLITE3,创建的是FTS4的虚拟表

# -*- coding:utf-8 -*-
import json
import sqlite3
import os, sys def join_key_by_dict(dict_info):
result = ""
for item in dict_info.keys():
result += item + ','
result = result.rstrip(',')
return result def join_value_by_dict(dict_info):
result = ""
for item in dict_info.keys():
if isinstance(dict_info[item], str):
result += "'" + dict_info[item].replace("'", "''") + "',"
else:
result += str(dict_info[item]) + ","
# result += dict_info[item] + ','
result = result.rstrip(',')
return result def create_tbl_by_json(json_file, tbl_name, db_conn):
# 打开文件,
json_handle = open(json_file, "r")
# 读取第一行,转换成json数据
line = json_handle.readline()
json_handle.close() # 清除左边的[,右边的,
line = line.lstrip('[').rstrip('\r\n ,') json_line = json.loads(line)
# 获取到所有key,构建表的创建命令
create_tbl_str = "create virtual table %s USING fts4( %s );" % (tbl_name, join_key_by_dict(json_line)) # 打开光标
cur = db_conn.cursor()
cur.execute(create_tbl_str)
db_conn.commit()
cur.close()
print('create %s table success[%s]' % (tbl_name, json_file) ) def insert_record_by_json(json_file, tbl_name, db_conn):
# 打开文件,
json_handle = open(json_file, "r")
# 读取第一行,转换成json数据
cur = db_conn.cursor()
count = 0
for line in json_handle:
json_line = json.loads(line.lstrip('[').rstrip('\r\n ,]'))
# 获取到所有key,构建表的创建命令
key_str = join_key_by_dict(json_line)
val_str = join_value_by_dict(json_line)
# 组装命令并执行
insert_record_str = "INSERT INTO %s (%s) VALUES(%s);" % (tbl_name, key_str, val_str)
cur.execute(insert_record_str)
count += 1
db_conn.commit()
cur.close()
json_handle.close()
print('insert record finish, count: %s' % count ) def convert_json_to_db(json_file, db_file):
# 检查json_file是否存在
if not os.path.exists(json_file):
print('file not exist: %s' % json_file)
return # 打开数据库连接
db_conn = sqlite3.connect(db_file) tbl_name, _ = os.path.splitext(os.path.basename(json_file))
# 开始创建表
create_tbl_by_json(json_file, tbl_name, db_conn) # 开始插入记录
insert_record_by_json(json_file, tbl_name, db_conn) # 关闭数据库
db_conn.close()
print('Operation done successfully') if __name__ == '__main__':
if len(sys.argv) != 3:
print('Usage: python %s json_file db_file' % os.path.basename(__file__))
exit(1)
json_file = sys.argv[1]
db_file = sys.argv[2]
convert_json_to_db(json_file, db_file)

一个通用的脚本,处理MySQL WorkBench导出表的JSON数据进SQLITE3,创建的是通用表

# -*- coding:utf-8 -*-
import json
import sqlite3
import os, sys def join_key_by_dict(dict_info):
result = ""
for item in dict_info.keys():
result += item + ','
result = result.rstrip(',')
return result def join_value_by_dict(dict_info):
result = ""
for item in dict_info.keys():
if isinstance(dict_info[item], str):
result += "'" + dict_info[item].replace("'", "''") + "',"
else:
result += str(dict_info[item]) + ","
# result += dict_info[item] + ','
result = result.rstrip(',')
return result def join_keyvalue_by_dict(dict_info):
result = ""
for item in dict_info.keys():
if isinstance(dict_info[item], int):
result += str(item) + " INTEGER,"
else:
result += str(item) + " TEXT,"
# result += dict_info[item] + ','
result = result.rstrip(',')
return result def create_tbl_by_json(json_file, tbl_name, db_conn):
# 打开文件,
json_handle = open(json_file, "r")
# 读取第一行,转换成json数据
line = json_handle.readline()
json_handle.close() # 清除左边的[,右边的,
line = line.lstrip('[').rstrip('\r\n ,') json_line = json.loads(line)
# 获取到所有key,构建表的创建命令
create_tbl_str = "create table %s (%s);" % (tbl_name, join_keyvalue_by_dict(json_line)) # 打开光标
cur = db_conn.cursor()
cur.execute(create_tbl_str)
db_conn.commit()
cur.close()
print('create %s table success[%s]' % (tbl_name, json_file) ) def insert_record_by_json(json_file, tbl_name, db_conn):
# 打开文件,
json_handle = open(json_file, "r")
# 读取第一行,转换成json数据
cur = db_conn.cursor()
count = 0
for line in json_handle:
json_line = json.loads(line.lstrip('[').rstrip('\r\n ,]'))
# 获取到所有key,构建表的创建命令
key_str = join_key_by_dict(json_line)
val_str = join_value_by_dict(json_line)
# 组装命令并执行
insert_record_str = "INSERT INTO %s (%s) VALUES(%s);" % (tbl_name, key_str, val_str)
cur.execute(insert_record_str)
count += 1
db_conn.commit()
cur.close()
json_handle.close()
print('insert record finish, count: %s' % count ) def convert_json_to_db(json_file, db_file):
# 检查json_file是否存在
if not os.path.exists(json_file):
print('file not exist: %s' % json_file)
return # 打开数据库连接
db_conn = sqlite3.connect(db_file) tbl_name, _ = os.path.splitext(os.path.basename(json_file))
# 开始创建表
create_tbl_by_json(json_file, tbl_name, db_conn) # 开始插入记录
insert_record_by_json(json_file, tbl_name, db_conn) # 关闭数据库
db_conn.close()
print('Operation done successfully') if __name__ == '__main__':
if len(sys.argv) != 3:
print('Usage: python %s json_file db_file' % os.path.basename(__file__))
exit(1)
json_file = sys.argv[1]
db_file = sys.argv[2]
convert_json_to_db(json_file, db_file)

  

一个通用的脚本,处理MySQL WorkBench导出表的JSON数据进SQLITE3,输出的是可以执行的SQL语句

# -*- coding:utf-8 -*-
import json
import os, sys def join_key_by_dict(dict_info):
result = ""
for item in dict_info.keys():
result += item + ','
result = result.rstrip(',')
return result def join_value_by_dict(dict_info):
result = ""
for item in dict_info.keys():
if isinstance(dict_info[item], str):
result += "'" + dict_info[item].replace("'", "''") + "',"
else:
result += str(dict_info[item]) + ","
# result += dict_info[item] + ','
result = result.rstrip(',')
return result def create_tbl_by_json(json_file, tbl_name, sql_file):
# 打开文件,
json_handle = open(json_file, "r")
# 读取第一行,转换成json数据
line = json_handle.readline()
json_handle.close() # 清除左边的[,右边的,
line = line.lstrip('[').rstrip('\r\n ,') json_line = json.loads(line)
# 获取到所有key,构建表的创建命令
create_tbl_str = 'create virtual table %s USING fts4( %s );\n' % (tbl_name, join_key_by_dict(json_line))
sql_file.write(create_tbl_str) # 打开光标
#print('create %s table success[%s]' % (tbl_name, json_file) ) def insert_record_by_json(json_file, tbl_name, sql_file):
# 打开文件,
json_handle = open(json_file, "r")
# 读取第一行,转换成json数据
count = 0
for line in json_handle:
json_line = json.loads(line.lstrip('[').rstrip('\r\n ,]'))
# 获取到所有key,构建表的创建命令
key_str = join_key_by_dict(json_line)
val_str = join_value_by_dict(json_line)
# 组装命令并执行
insert_record_str = "INSERT INTO %s (%s) VALUES(%s);\n" % (tbl_name, key_str, val_str)
sql_file.write(insert_record_str)
count += 1
json_handle.close()
#print('insert record finish, count: %s' % count ) def convert_json_to_sql(json_file, sql_file):
# 检查json_file是否存在
if not os.path.exists(json_file):
print('file not exist: %s' % json_file)
return # 检查sql_file是否存在
if os.path.exists(sql_file):
print('file is exist: %s, will overwrite it.' % sql_file) # 打开文件
sql_handle = open(sql_file, "w") tbl_name, _ = os.path.splitext(os.path.basename(json_file))
# 开始创建表
create_tbl_by_json(json_file, tbl_name, sql_handle) # 开始插入记录
insert_record_by_json(json_file, tbl_name, sql_handle) # 关闭文件
sql_handle.close()
print('Operation done successfully') if __name__ == '__main__':
if len(sys.argv) != 3:
print('Usage: python %s json_file db_file' % os.path.basename(__file__))
exit(1)
json_file = sys.argv[1]
sql_file = sys.argv[2]
convert_json_to_sql(json_file, sql_file)

  

 
 
 
 
 
 

三个通用的脚本,处理MySQL WorkBench导出表的JSON数据进SQLITE3的更多相关文章

  1. MySQL Workbench 6 不能删除数据等问题(“Error Code: 1175”) 和入门教程

    网络资料收集 当用MySQL Workbench进行数据库的批量更新时,执行一个语句会碰到以下错误提示: Error Code: 1175 You are using safe...without a ...

  2. [笔记] MySql Workbench 导出表结构和数据报错 mysqldump: [ERROR] unknown variable 'delayed-insert=FALSE'

    下午使用MySql Workbench导出数据库表结构,设置完导出选项后执行导出,报如下错误: :: Dumping nacweixindb (tb_app) Running: mysqldump.e ...

  3. 只要三步!阿里云DLA帮你处理海量JSON数据

    概述 您可能有大量应用程序产生的JSON数据,您可能需要对这些JSON数据进行整理,去除不想要的字段,或者只保留想要的字段,或者仅仅是进行数据查询. 那么,利用阿里云Data Lake Analyti ...

  4. 利用PHP脚本辅助MySQL数据库管理5-检查异常数据

    <?php $dbi = new DbMysql; $dbi->dbh = 'mysql://root:mysql@127.0.0.1/coffeetest'; $map = array( ...

  5. mysql workbench 导出表结构

    Server->Data Export 选择数据库(我的是 lhc库) -> 选择对应表(我的是  device表), Dump Structre and Data 导出表数据和表结构 D ...

  6. Mysql 导入导出表结构与数据

    1.导出整个数据库 mysqldump -u用户名 -p密码  数据库名 > 导出的文件名  C:\Users\jack> mysqldump -uroot -pmysql account ...

  7. mysql只导出表结构或数据

    唯一的非导电结构指南数据 mysqldump -t 数据库名称 -uroot -p > xxx.sql 指南结构不仅指导数据 mysqldump    --opt -d  数据库名 -u -p ...

  8. MySQL Workbench的使用教程 (初级入门版)

    MySQL Workbench 是 MySQL AB 最近释放的可视数据库设计工具.这个工具是设计 MySQL 数据库的专用工具. MySQL Workbench 拥有很多的功能和特性:这篇由Djon ...

  9. (转)MySQL Workbench的使用教程 (初级入门版)

    转自:http://www.cnblogs.com/yqskj/archive/2013/03/01/2938027.html MySQL Workbench 是 MySQL AB 最近释放的可视数据 ...

随机推荐

  1. HDU1530 最大团 模板

    Maximum Clique Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. FreeRTOS - 任务使用注意

    如果使用xTaskCreate() 创建任务,任务栈使用的是FreeRTOS heap

  3. 鸡尾酒排序Cocktail sort

    鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 3 4 5 1] 第二步迭代,3 < 4不换 [ ...

  4. word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method

    最近接到任务研究word2vec,感觉网络上关于这个的资料层次不齐,总感觉解释的都没有那么完善.或许就连作者本人也不是非常清楚为什么他的模型好使.论文中提到的negtive sampling给了我很大 ...

  5. dp优化-四边形不等式(模板题:合并石子)

    学习博客:https://blog.csdn.net/noiau/article/details/72514812 看了好久,这里整理一下证明 方程形式:dp(i,j)=min(dp(i,k)+dp( ...

  6. 如果你也想写个完整的 Vue 组件项目

    1.一个完整的组件项目需要什么? 必要的: 组件构建方式 ( webpack / rollup 之类 ),并提供至少一个主流的输出格式 (ESModule) Demo 及 Demo 源码 文档,可以是 ...

  7. End to End Sequence Labeling via Bidirectional LSTM-CNNs-CRF论文小结

    本篇论文是卡内基梅隆大学语言技术研究所2016年  arXiv:1603.01354v5 [cs.LG] 29 May 2016 今天先理解一下这个是什么意思:        找到的相关理解:arXi ...

  8. 64_a2

    arquillian-core-parent-1.1.11-6.fc26.noarch.rpm 10-Feb-2017 13:22 12918 arquillian-core-spi-1.1.11-6 ...

  9. c#使用selenium+Chromedriver参数配置

    using System; //添加selenium的引用 using OpenQA.Selenium.PhantomJS; using OpenQA.Selenium.Chrome; using O ...

  10. 【bzoj4486】【JSOI2015】串分割

    老省选题了. 首先考虑怎么比较超长数字的大小? 参见UTR1的那道题 先比size,然后比较字典序即可. 接下来考虑下切割的问题. 因为要将字符串切割成k份,所以这个字符串只会存在n/k个本质不同的起 ...