安装依赖模块

当node.js脚本在运行的时候,需要很多支持模块,这些模块存储在node_modules文件夹中。该脚本在执行过程中需要使用到fsstring-format两个支持模块,作用分别是:

  • fs:支持node脚本读取文件。
  • string-format:创建格式化字符串

新建一个文件夹,在其中安装支持模块。安装过程如下:

  1. 打开“命令提示符”或者“终端”,输入

    npm install fs string-format

    由于没有创建package.json文件,因此无需输入-S命令。

  2. 安装编辑器自动提示支持文件(由于笔者使用的编辑器是Visual Studio Code,支持使用TypeScript脚本作为自动补全文档的来源)。在命令提示符或终端中输入
    tsd install node -ros

    输入参数指令 -ros 的目的是在typings文件夹下创建tsd.d.ts文件,将所有用于提示的文件在这个文件中全部用

    /// reference path="..."

    语句引用,这样在主文件中只需要使用

    /// reference path="typings/tsd.d.ts"

    引用即可出现所有的自动补全文件

编程实现

  1. 首先要引入安装的依赖模块。在文件开头输入

    // require modules
    var fs = require('fs');
    var format = require('string-format');

    使用Visual Studio Code的话,可以在文件开头加入 /// reference path="typings/tsd.d.ts" 插入自动补全。

  2. 随后读取JSON文件,并转换为JSON对象。
    var ShopJson = JSON.parse(fs.readFileSync("Shop_Only2100.json"));

    这个JSON文件是利用ArcGIS软件导出的数据,因此有其固定格式。在下文读取中按照该格式进行读取,不同文件的读取方式不同。

  3. 创建写文件流。
    var ofs = fs.createWriteStream("./SqlScripts/Shop.sql");
  4. 读取数据
    ShopJson['features'].forEach(function(iFeature) {
    var iData = iFeature['attributes'];
    if (iData['TELEPHONE'] == ' ') {
    iData['TELEPHONE'] = '';
    }
    if (iData['ADDRESS'] == ' ') {
    iData['ADDRESS'] = '';
    }
    iData['Lon'] = iFeature['geometry']['points'][0][0];
    iData['Lat'] = iFeature['geometry']['points'][0][1];
    }, this);
  5. 写文件。提取了一条数据之后,转换为SQL语句存储到文件中。
    ofs.write(format('INSERT INTO supermarket(FID, SuperMarketNAME, KIND, TELEPHONE, REGION_ID, LONGITUDE, LATITUDE) VALUES({FID_购物_p}, "{NAME}", "{KIND}", "{"{ADDRESS}", {FID_Wuhan}, {Lon}, {Lat});\n', iData));

完成!

完整代码

 /// <reference path="typings/tsd.d.ts" />
// convert Shop_Only2100.json to sql script
var fs = require('fs');
var format = require('string-format')
// create write stream
var ofs = fs.createWriteStream("./SqlScripts/Shop.sql");
// read file
var ShopJson = JSON.parse(fs.readFileSync("Shop_Only2100.json"));
ShopJson['features'].forEach(function(iFeature) {
var iData = iFeature['attributes'];
if (iData['TELEPHONE'] == ' ') {
iData['TELEPHONE'] = '';
}
if (iData['ADDRESS'] == ' ') {
iData['ADDRESS'] = '';
}
iData['Lon'] = iFeature['geometry']['points'][0][0];
iData['Lat'] = iFeature['geometry']['points'][0][1];
ofs.write(format('INSERT INTO supermarket(FID, SuperMarketNAME, KIND, TELEPHONE, ADDRESS,
REGION_ID, LONGITUDE, LATITUDE) VALUES({FID_购物_p}, "{NAME}", "{KIND}", "{TELEPHONE}",
"{ADDRESS}", {FID_Wuhan}, {Lon}, {Lat});\n', iData));
}, this);
console.log("Done!")

使用node.js编写脚本将JSON数据转换为SQL语句的更多相关文章

  1. Python将JSON格式数据转换为SQL语句以便导入MySQL数据库

    前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据.我们希望把这些数据导入到MySQL数据库中.phpMyadmin能够把MySQL数据库中的数据导出为JSON格式文件,但却 ...

  2. node.js学习笔记之json数据转string

    Node.js中的JSON问题   var str = '{"dir":"kunhony","param":"archive&qu ...

  3. 将excel表格数据转换为sql语句

    今天刚从经理那学到的,迫不及待写下来,以后肯定用得上 1.首先是将excel文件另存为csv格式文件 2.在当前行的最后新增一列,输入下面函数(其中表字段因人而异) =CONCATENATE(&quo ...

  4. 为Node.js编写组件的几种方式

    本文主要备忘为Node.js编写组件的三种实现:纯js实现.v8 API实现(同步&异步).借助swig框架实现. 关键字:Node.js.C++.v8.swig.异步.回调. 简介 首先介绍 ...

  5. Node.js编写CLI的实践

    导语:通常而言,Node.js的应用场景有前后端分离.海量web页面渲染服务.命令行工具和桌面端应用等等.本篇文章选取CLI(Command Line Tools)这子领域,来谈谈Node.js编写C ...

  6. Node.js编写be的流程(express)

    Node.js编写be的流程 1.当前项目目录下首先安装express 2.自动生成express插件结构 express -e 3.执行完前两步的效果      4.此时的package.json ...

  7. 在 Node.js 中处理大 JSON 文件

    在 Node.js 中处理大 JSON 文件 场景描述 问题一: 假设现在有一个场景,有一个大的 JSON 文件,需要读取每一条数据经过处理之后输出到一个文件或生成报表数据,怎么能够流式的每次读取一条 ...

  8. Node.js学习之TCP/IP数据通讯

    Node.js学习之TCP/IP数据通讯 1.使用net模块实现基于TCP的数据通讯 提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信 1.1创建TCP服务器 在Node.js利用 ...

  9. js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)

    js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...

随机推荐

  1. Windows Forms框架编程

    <Windows Forms框架编程>节选   第九章 设计模式与原则 软件设计模式(Design pattern)是一套被反复使用的代码设计经验总结.使用设计模式是为了可重用代码.让代码 ...

  2. MIT Introduction to Computer Science and Programming (Lesson one )

    MIT Introduction to Computer Science and Programming (Lesson one ) 这篇文是记载 MIT 计算机科学及编程导论 第一集 的笔记 Les ...

  3. Moq的使用心得

    Moq的使用心得 1.Moq中Mock Repository时最好是Mock Repository的接口,这样会避免不知名的错误. var mockClubRepository = new Mock& ...

  4. [转]解决MySQL出现大量unauthenticated user的问题

    最近发现两台MySQL server在中午的时候忽然(很突然的那种)发飙,不断的挂掉.重启mysql也尽是失败,看mysql的errorlog,只能看到类似如下的信息: Forcing close o ...

  5. .NET 微信开放平台接口(接收短信、发送短信)

    .NET 微信开放平台接口(接收短信.发送短信) 前两天做个项目用到了微信api功能.项目完成后经过整理封装如下微信操作类. 以下功能的实现需要开发者已有微信的公众平台账号,并且开发模式已开启.接口配 ...

  6. List remove操作注意问题

    public static void main(String[] args) { // TODO Auto-generated method stub List<String> list ...

  7. ios搭建开发环境

    ios搭建开发环境 好久就想试水IOS开发了,由于开发环境限制,一直局限于理论和虚拟机,近来入手了MacBook Pro,也来尝尝鲜,笔者也是现学现总结,如果有不足,请指正. IOS开发必备MAC O ...

  8. JAXP进行DOM和SAX解析

    1.常用XML的解析方式:DOM和SAX 1)DOM思想:将整个XML加载内存中,形成文档对象,所以对XML操作都对内存中文档对象进行. 2)SAX思想:一边解析,一边处理,一边释放内存资源---不允 ...

  9. 一步步教你读懂NET中IL(附带图)

    一步步教你读懂NET中IL(附带图) 接触NET也有1年左右的时间了,NET的内部实现对我产生了很大的吸引力,在msdn上找到一篇关于NET的IL代码的图解说明,写的挺不错的.个人觉得:能对这些底部的 ...

  10. Arduino live weather broadcasting 实时天气站

    Live broadcasting with arduino get a pc , make it run linux. make arduino catch the weather sensor a ...