使用node.js編寫腳本將JSON數據轉換為SQL語句


安裝依賴模塊

當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));

     

完成!

完整代碼

 1 /// <reference path="typings/tsd.d.ts" />
 2 // convert Shop_Only2100.json to sql script
 3 var fs = require('fs');
 4 var format = require('string-format')
 5 // create write stream
 6 var ofs = fs.createWriteStream("./SqlScripts/Shop.sql");
 7 // read file
 8 var ShopJson = JSON.parse(fs.readFileSync("Shop_Only2100.json"));
 9 ShopJson['features'].forEach(function(iFeature) {
10     var iData = iFeature['attributes'];
11     if (iData['TELEPHONE'] == ' ') {
12         iData['TELEPHONE'] = '';
13     }
14     if (iData['ADDRESS'] == ' ') {
15         iData['ADDRESS'] = '';
16     }
17     iData['Lon'] = iFeature['geometry']['points'][0][0];
18     iData['Lat'] = iFeature['geometry']['points'][0][1];
19     ofs.write(format('INSERT INTO supermarket(FID, SuperMarketNAME, KIND, TELEPHONE, ADDRESS, 
20         REGION_ID, LONGITUDE, LATITUDE) VALUES({FID_購物_p}, "{NAME}", "{KIND}", "{TELEPHONE}", 
21         "{ADDRESS}", {FID_Wuhan}, {Lon}, {Lat});\n', iData));
22 }, this);
23 console.log("Done!")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM