Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var fs = require('fs');
- var pg = require('pg');
- var promise = require('promise');
- var saxStream = require('sax').createStream(strict = true, opt = {lowercase: true, normalize: true});
- var CONNECTION_OBJECT = {
- user: "elof",
- password: "driv3r",
- database: "mydb",
- host: "localhost"
- };
- var knex = require('knex')({client: 'pg', connection: CONNECTION_OBJECT});
- var SQL_FILE = "setupButikArtikel.sql";
- var FILE_TO_PARSE = "tinybutiksartikel.xml";
- var client = new pg.Client(CONNECTION_OBJECT);
- client.connect(function(err) {
- if(err) {
- console.error("Err", err);
- return;
- }
- console.log("Connected to pg");
- client.query(fs.readFileSync(SQL_FILE).toString(), function(err, result) {
- if(err) {
- console.error("Err", err);
- }
- console.log(result);
- fs.createReadStream(FILE_TO_PARSE).pipe(saxStream);
- });
- });
- //
- // Done with setting up the database
- //
- var curButikNr = "";
- var insideArtikel = false;
- var butikArtikels = [];
- saxStream.on("opentag", function(node) {
- //console.log(node);
- if(node.name == "Butik") {
- curButikNr = node.attributes.ButikNr;
- }
- if(node.name == "ArtikelNr") {
- insideArtikel = true;
- }
- });
- saxStream.on("text", function(text) {
- if(curButikNr != "" && insideArtikel) {
- curArtikelNr = text;
- butikArtikels.push(text);
- }
- });
- saxStream.on("closetag", function(tagname) {
- if(tagname == "ArtikelNr") {
- insideArtikel = false;
- }
- if(tagname == "Butik") {
- // curButikNr = 102
- // Butikartikels = [1234, 2345, 34567, ...]
- console.log(butikArtikels.length);
- var q1 = knex('butik')
- .select('id', 'Nr')
- .where('Nr', curButikNr);
- var q2 = knex('artikel')
- .select(['id', 'nr'])
- .whereIn('nr', butikArtikels);
- Promise.all([q1, q2]).then(([[butik], artikels]) => {
- console.log("Butik id: " + butik.id);
- console.log("Artikel length: " + artikels.length);
- var i = 0;
- var butikArtikels = [];
- artikels.forEach((artikel) => {
- butikArtikels.push({
- butik_id: butik.id,
- butik_nr: butik.Nr,
- artikel_id: artikel.id,
- artikel_nr: artikel.nr
- });
- });
- knex('butik_artikel').insert(butikArtikels).then(() => { console.log("Hi"); });
- })
- .then(() => {
- console.log("Inserted butik " + curButikNr);
- });
- }
- });
- saxStream.on("error", function(e) {
- console.error(e);
- });
- saxStream.on("end", function() {
- client.end();
- console.log("Stream end");
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement