三个通用的脚本,处理MySQL WorkBench导出表的JSON数据进SQLITE3
一个通用的脚本,处理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的更多相关文章
- MySQL Workbench 6 不能删除数据等问题(“Error Code: 1175”) 和入门教程
网络资料收集 当用MySQL Workbench进行数据库的批量更新时,执行一个语句会碰到以下错误提示: Error Code: 1175 You are using safe...without a ...
- [笔记] MySql Workbench 导出表结构和数据报错 mysqldump: [ERROR] unknown variable 'delayed-insert=FALSE'
下午使用MySql Workbench导出数据库表结构,设置完导出选项后执行导出,报如下错误: :: Dumping nacweixindb (tb_app) Running: mysqldump.e ...
- 只要三步!阿里云DLA帮你处理海量JSON数据
概述 您可能有大量应用程序产生的JSON数据,您可能需要对这些JSON数据进行整理,去除不想要的字段,或者只保留想要的字段,或者仅仅是进行数据查询. 那么,利用阿里云Data Lake Analyti ...
- 利用PHP脚本辅助MySQL数据库管理5-检查异常数据
<?php $dbi = new DbMysql; $dbi->dbh = 'mysql://root:mysql@127.0.0.1/coffeetest'; $map = array( ...
- mysql workbench 导出表结构
Server->Data Export 选择数据库(我的是 lhc库) -> 选择对应表(我的是 device表), Dump Structre and Data 导出表数据和表结构 D ...
- Mysql 导入导出表结构与数据
1.导出整个数据库 mysqldump -u用户名 -p密码 数据库名 > 导出的文件名 C:\Users\jack> mysqldump -uroot -pmysql account ...
- mysql只导出表结构或数据
唯一的非导电结构指南数据 mysqldump -t 数据库名称 -uroot -p > xxx.sql 指南结构不仅指导数据 mysqldump --opt -d 数据库名 -u -p ...
- MySQL Workbench的使用教程 (初级入门版)
MySQL Workbench 是 MySQL AB 最近释放的可视数据库设计工具.这个工具是设计 MySQL 数据库的专用工具. MySQL Workbench 拥有很多的功能和特性:这篇由Djon ...
- (转)MySQL Workbench的使用教程 (初级入门版)
转自:http://www.cnblogs.com/yqskj/archive/2013/03/01/2938027.html MySQL Workbench 是 MySQL AB 最近释放的可视数据 ...
随机推荐
- 使用 Rational AppScan 保证 Web 应用的安全性,第 1 部分: Web 安全与 Rational AppScan 入门
前言 当今世界,Internet(因特网)已经成为一个非常重要的基础平台,很多企业都将应用架设在该平台上,为客户提供更为方便.快捷的服务支持.这些应用 在功能和性能上,都在不断的完善和提高,然而在非常 ...
- 大道至简第一章伪代码读后感o(╯□╰)o
import.java.io*; import class duhougan; public static void main(Striing arges[]){ system.out.println ...
- 读取txt内容放入set中
package pingbi; /** * 将txt文本读入导入到set中 * 问题: * 第一个地方有会多一个 ?--解决问题很简单,但不知道问题的原因 */ import java.io.Buff ...
- [USACO06NOV] Corn Fields
https://www.luogu.org/problem/show?pid=1879 题目描述 Farmer John has purchased a lush new rectangular pa ...
- Centos7下关于memcached的安装和简单使用
在这里,由于用编译安装memcached服务端过于复杂,因此我选用依赖管理工具 yum 来实现 memcached 的服务端安装: [root@localhost /]# yum install -y ...
- .NET中方法的注意事项 明细
1. 方法中return 会终止整个方法段. 而break只能终止当前循环. 2. 方法就是一对可用代码的复用. a . 对于可重用的代码,在vs中选中,右键 重构 提取方法.即可自动封装成一个方 ...
- Vue前端开发规范(山东数漫江湖)
一.强制 1. 组件名为多个单词 组件名应该始终是多个单词的,根组件 App 除外. 正例: export default { name: 'TodoItem', // ... } 反例: expor ...
- 【洛谷 P1073】 最优贸易 (Tarjan缩点+拓扑排序)
题目链接 先\(Tarjan\)缩点,记录每个环内的最大值和最小值. 然后跑拓扑排序,\(Min[u]\)表示到\(u\)的最小值,\(ans[u]\)表示到\(u\)的答案,\(Min\)和\(an ...
- Reachability from the Capital(Codeforces Round #490 (Div. 3)+tarjan有向图缩点)
题目链接:http://codeforces.com/contest/999/problem/E 题目: 题意:给你n个城市,m条单向边,问你需要加多少条边才能使得从首都s出发能到达任意一个城市. 思 ...
- POJ 2991 Crane (线段树)
题目链接 Description ACM has bought a new crane (crane -- jeřáb) . The crane consists of n segments of v ...