JSON 文本文件转 SQL 脚本示例

本贴最后更新于 954 天前,其中的信息可能已经时移世易

本示例为“全国行政区划”数据解析,示例资源👉 data.zip
💡 注意:由于目前所在公司团队使用的数据较为陈旧,若阁下有提供最新行政区划数据的需求,请自行寻找相关资源,谢谢。

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.io.FileUtils;
import org.springframework.core.io.ClassPathResource;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * Json文本文件转Sql语句工具
 *
 * @author Stone
 */
public class JsonToSqlUtil {

    public static void main(String[] args) throws Exception {
        long startTime = System.currentTimeMillis();
        System.out.println("----------Json文本文件转Sql开始----------");
        jsonToSql();
        System.out.println("----------Json文本文件转Sql结束,耗时:" + (System.currentTimeMillis() - startTime) + "毫秒----------");
    }

    private static void jsonToSql() throws Exception {
        ClassPathResource resource = new ClassPathResource("data.json");
        File file = resource.getFile();
        String data = FileUtils.readFileToString(file);
        //省
        JSONArray provinceArray = JSONArray.parseArray(data);

        //根据文本文件数据格式,遍历解析数据
        for (int i = 0; i < provinceArray.size(); i++) {
            JSONObject province = (JSONObject) provinceArray.get(i);
            System.out.println(province);
            String provinceIdId = IdGen.uuid();
            String provinceCode = province.getString("code");
            String provinceName = province.getString("name");
            String provinceSql = "INSERT INTO SYS_ADMINISTRATIVE_DIVISION (ID, CODE, NAME, PARENT_CODE, PARENT_NAME, DESCRIBE, IS_ENABLE)VALUES('" + provinceIdId + "','" + provinceCode + "','" + provinceName + "','','','','1'); \r\n";
            System.out.println(provinceSql);
            write(provinceSql);
            //市
            JSONArray cityArray = province.getJSONArray("children");
            if (cityArray != null && cityArray.size() > 0) {
                for (int j = 0; j < cityArray.size(); j++) {
                    JSONObject city = (JSONObject) cityArray.get(j);
                    System.out.println(city);
                    String cityId = IdGen.uuid();
                    String cityCode = city.getString("code");
                    String cityName = city.getString("name");
                    String citySql = "INSERT INTO SYS_ADMINISTRATIVE_DIVISION (ID, CODE, NAME, PARENT_CODE, PARENT_NAME, DESCRIBE, IS_ENABLE)VALUES('" + cityId + "','" + cityCode + "','" + cityName + "','" + provinceCode + "','" + provinceName + "','','1'); \r\n";
                    System.out.println(citySql);
                    write(citySql);
                    //区县
                    JSONArray districtArray = city.getJSONArray("children");
                    if (districtArray != null && districtArray.size() > 0) {
                        for (int k = 0; k < districtArray.size(); k++) {
                            JSONObject district = (JSONObject) districtArray.get(k);
                            System.out.println(district);
                            String districtId = IdGen.uuid();
                            String districtCode = district.getString("code");
                            String districtName = district.getString("name");
                            String districtSql = "INSERT INTO SYS_ADMINISTRATIVE_DIVISION (ID, CODE, NAME, PARENT_CODE, PARENT_NAME, DESCRIBE, IS_ENABLE)VALUES('" + districtId + "','" + districtCode + "','" + districtName + "','" + cityCode + "','" + cityName + "','','1'); \r\n";
                            System.out.println(districtSql);
                            write(districtSql);
                        }
                    }
                }
            }
        }
    }

    /**
     * 写入sql文件
     *
     * @param sql
     * @throws IOException
     */
    private static void write(String sql) throws IOException {
        File file;
        file = new File("D:/data.sql");
        if (!file.exists()) {
            file.createNewFile();
        }
        FileWriter fileWriter = new FileWriter(file, true);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        bufferedWriter.write(sql);
        bufferedWriter.close();
    }
}

英雄留步!走过路过不要错过,既然来了就恭请加入 平等 • 自由 • 奔放黑客派社区,一起学习,相互分享,共同进步吧 😄
注册邀请链接:https://hacpai.com/register?r=Stone

  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 189 回帖
4 操作
Stone 在 2019-10-16 09:36:03 更新了该帖
Stone 在 2019-10-15 20:25:02 更新了该帖
Stone 在 2019-10-15 17:20:39 更新了该帖
Stone 在 2019-10-15 16:29:12 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    51 引用 • 189 回帖
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 13 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    479 引用 • 1379 回帖 • 560 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    6 引用 • 26 回帖
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 19 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    44 引用 • 112 回帖 • 434 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 48 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    23 引用 • 363 回帖
  • OnlyOffice
    4 引用 • 10 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 1 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    9 引用 • 117 回帖
  • 倾城之链
    10 引用 • 39 回帖 • 31 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    29 引用 • 88 回帖
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    79 引用 • 122 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    4 引用 • 28 回帖 • 2 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 5 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 144 关注
  • 导航

    各种优质网址链接、内容导航。

    23 引用 • 157 回帖 • 1 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 286 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 549 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 343 关注
  • V2Ray

    Project V 是一个工具集合,它可以帮助你打造专属的基础通信网络。Project V 的核心工具称为 V2Ray,其主要负责网络协议和功能的实现,与其它 Project V 通信。

    10 引用 • 14 回帖 • 1 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    156 引用 • 590 回帖 • 1 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    221 引用 • 1439 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 1 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    295 引用 • 539 回帖 • 359 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 4 关注