使用node.js编写脚本将JSON数据转换为SQL语句
安装依赖模块
当node.js脚本在运行的时候,需要很多支持模块,这些模块存储在node_modules文件夹中。该脚本在执行过程中需要使用到fs、string-format两个支持模块,作用分别是:
- fs:支持node脚本读取文件。
- string-format:创建格式化字符串
新建一个文件夹,在其中安装支持模块。安装过程如下:
- 打开“命令提示符”或者“终端”,输入
npm install fs string-format
由于没有创建package.json文件,因此无需输入-S命令。
- 安装编辑器自动提示支持文件(由于笔者使用的编辑器是Visual Studio Code,支持使用TypeScript脚本作为自动补全文档的来源)。在命令提示符或终端中输入
tsd install node -ros
输入参数指令 -ros 的目的是在typings文件夹下创建tsd.d.ts文件,将所有用于提示的文件在这个文件中全部用
/// reference path="..."
语句引用,这样在主文件中只需要使用
/// reference path="typings/tsd.d.ts"
引用即可出现所有的自动补全文件
编程实现
- 首先要引入安装的依赖模块。在文件开头输入
// require modules
var fs = require('fs');
var format = require('string-format');使用Visual Studio Code的话,可以在文件开头加入 /// reference path="typings/tsd.d.ts" 插入自动补全。
- 随后读取JSON文件,并转换为JSON对象。
var ShopJson = JSON.parse(fs.readFileSync("Shop_Only2100.json"));
这个JSON文件是利用ArcGIS软件导出的数据,因此有其固定格式。在下文读取中按照该格式进行读取,不同文件的读取方式不同。
- 创建写文件流。
var ofs = fs.createWriteStream("./SqlScripts/Shop.sql");
- 读取数据
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); - 写文件。提取了一条数据之后,转换为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语句的更多相关文章
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据.我们希望把这些数据导入到MySQL数据库中.phpMyadmin能够把MySQL数据库中的数据导出为JSON格式文件,但却 ...
- node.js学习笔记之json数据转string
Node.js中的JSON问题 var str = '{"dir":"kunhony","param":"archive&qu ...
- 将excel表格数据转换为sql语句
今天刚从经理那学到的,迫不及待写下来,以后肯定用得上 1.首先是将excel文件另存为csv格式文件 2.在当前行的最后新增一列,输入下面函数(其中表字段因人而异) =CONCATENATE(&quo ...
- 为Node.js编写组件的几种方式
本文主要备忘为Node.js编写组件的三种实现:纯js实现.v8 API实现(同步&异步).借助swig框架实现. 关键字:Node.js.C++.v8.swig.异步.回调. 简介 首先介绍 ...
- Node.js编写CLI的实践
导语:通常而言,Node.js的应用场景有前后端分离.海量web页面渲染服务.命令行工具和桌面端应用等等.本篇文章选取CLI(Command Line Tools)这子领域,来谈谈Node.js编写C ...
- Node.js编写be的流程(express)
Node.js编写be的流程 1.当前项目目录下首先安装express 2.自动生成express插件结构 express -e 3.执行完前两步的效果 4.此时的package.json ...
- 在 Node.js 中处理大 JSON 文件
在 Node.js 中处理大 JSON 文件 场景描述 问题一: 假设现在有一个场景,有一个大的 JSON 文件,需要读取每一条数据经过处理之后输出到一个文件或生成报表数据,怎么能够流式的每次读取一条 ...
- Node.js学习之TCP/IP数据通讯
Node.js学习之TCP/IP数据通讯 1.使用net模块实现基于TCP的数据通讯 提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信 1.1创建TCP服务器 在Node.js利用 ...
- js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)
js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...
随机推荐
- Mysql高级之索引
原文:Mysql高级之索引 索引:是针对数据所建立的目录. 作用: 可以加快查询速度 负面影响: 降低了增删改的速度. 索引的创建原则: 1:不要过度索引 2:在where条件最频繁的列上加.在重复度 ...
- 国内外最全面和主流的JS框架与WEB UI库
当下对于网站前段开发人员来说,很少有人不使用一些JS框架或者WEB UI库,因此这些可以有效提高网站前段开发速度,并且能够统一开发环境,对于不同浏览器的兼容性也不需要程序员操心,有了这些优点,当然大家 ...
- 如何使ActionBar不那么单调
此时我没有生产博客,此时我只是优秀博客的搬运工! 博客原址,有兴趣的可以查看一下. 详情如下: 使ActionBar不那么单调 回到2013年5月份,每一个人都发觉了Play Music中Action ...
- 分享一个c#写的开源分布式消息队列equeue
分享一个c#写的开源分布式消息队列equeue 前言 equeue消息队列中的专业术语 Topic Queue Producer Consumer Consumer Group Broker 集群消费 ...
- 领域驱动设计(DDD)的实际应用
领域驱动设计(DDD)的实际应用 笔者先前参与了一个有关汽车信息的网站开发,用于显示不同品牌的汽车的信息,包括车型,发动机型号,车身尺寸和汽车报价等信息.在建模时,我们只需要创建名为Car的实体( ...
- TDD单元测试驱动
使用IdleTest进行TDD单元测试驱动开发演练(2) [前言] 1. 有关上篇请参见<使用IdleTest进行TDD单元测试驱动开发演练(1)>,有关本篇用到Entity Fram ...
- [转]Intercepting the App Store's Traffic on iOS
Source:https://nabla-c0d3.github.io/blog/2013/08/20/intercepting-the-app-stores-traffic-on-ios/ TL;D ...
- [转]http://www.russbishop.net/xcode-exception-breakpoints
原文:http://www.russbishop.net/xcode-exception-breakpoints Many people are not aware of Xcode's powerf ...
- ASP.NET MVC企业开发的基本环境
ASP.NET MVC企业开发的基本环境[资源服务器概念] 学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang 茗洋 EasyUI1.3.4 ...
- key-list类型内存数据引擎介绍及使用场景
“互联网数据目前基本使用两种方式来存储,关系数据库或者key value.但是这些互联网业务本身并不属于这两种数据类型,比如用户在社会化平台中的关系,它是一个list,如果要用关系数据库存储就需要转换 ...