一个通用的脚本,处理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. X210串口配置与stdio移植

    串口控制器初始化关键步骤 (1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0) (2)GPA0CON(0xE0200000),bit[3:0] ...

  2. Spring Boot 打包部署

    一.打包成jar并部署 1.工程--右键选择运行配置: 在Goals中输入: org.apache.maven.plugins:maven-jar-plugin:.RELEASE:repackage ...

  3. [LeetCode] Binary Tree Level Order Traversal 与 Binary Tree Zigzag Level Order Traversal,两种按层次遍历树的方式,分别两个队列,两个栈实现

    Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes ...

  4. defer与async的区别

    当浏览器碰到 script 脚本的时候: <script src="script.js"></script> 没有 defer 或 async,浏览器会立即 ...

  5. maven项目执行run as/maven install时提示找不到包

    选中项目,右键 右键项目->MAVEN->Update Project,如下图 点击ok,clean相关项目,再打包.如果还是不行看一下你jdk 的版本和你编译的版本是否一致

  6. 【51NOD】斜率最大

    [题解]通过画图易得结论:最大斜率一定出现在相邻两点之间. #include<cstdio> #include<algorithm> #include<cstring&g ...

  7. Python 开发中easy_install的安装及使用

    easy_install是一个python的扩展包,主要是用来简化python安装第三方安装包,在安装了easy_install之后,安装python第三方安装包就只需要在命令行中输入:easy_in ...

  8. ctsc&apio2018八日游

    day0: 早就知道自己是打酱油的..早就做好了打铁的准备.. Q:那你来干嘛 A:当然是来玩啊!!玩啊!啊!! emmmmm 抱着半期考不及格的卷子瑟瑟发抖地上了飞机. day1:报道!当然还有在宾 ...

  9. thread_info&内核栈

    转载:http://blog.chinaunix.net/uid-22548820-id-2125152.html 之所以将thread_info结构称之为小型的进程描述符,是因为在这个结构中并没有直 ...

  10. Python基础===使用virtualenv创建一个新的运行环境

    virtualenv简直是一个神器,以ubuntu环境为例, 先安装virtualenv 然后执行如下命令: 多版本创建env的方式: virtualenv 虚拟环境文件目录名 python=pyth ...