fixed saved data to be escaped properly
parent
f2b173f566
commit
4026ba1815
|
@ -3,7 +3,17 @@ var startTime = new Date().getTime();
|
||||||
require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {
|
require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {
|
||||||
|
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
var db = require("ep_etherpad-lite/node/db/DB");;
|
|
||||||
|
var ueberDB = require("ep_etherpad-lite/node_modules/ueberDB");
|
||||||
|
var settings = require("ep_etherpad-lite/node/utils/Settings");
|
||||||
|
var log4js = require('ep_etherpad-lite/node_modules/log4js');
|
||||||
|
|
||||||
|
var dbWrapperSettings = {
|
||||||
|
cache: 0,
|
||||||
|
writeInterval: 100,
|
||||||
|
json: false // data is already json encoded
|
||||||
|
};
|
||||||
|
var db = new ueberDB.database(settings.dbType, settings.dbSettings, dbWrapperSettings, log4js.getLogger("ueberDB"));
|
||||||
|
|
||||||
var sqlFile = process.argv[2];
|
var sqlFile = process.argv[2];
|
||||||
|
|
||||||
|
@ -15,39 +25,85 @@ require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {
|
||||||
}
|
}
|
||||||
|
|
||||||
log("initializing db");
|
log("initializing db");
|
||||||
db.init(function(){
|
db.init(function(err)
|
||||||
log("done");
|
{
|
||||||
|
//there was an error while initializing the database, output it and stop
|
||||||
|
if(err)
|
||||||
|
{
|
||||||
|
console.error("ERROR: Problem while initalizing the database");
|
||||||
|
console.error(err.stack ? err.stack : err);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log("done");
|
||||||
|
|
||||||
log("open output file...");
|
log("open output file...");
|
||||||
var lines = fs.readFileSync(sqlFile, 'utf8').split("\n");;
|
var lines = fs.readFileSync(sqlFile, 'utf8').split("\n");
|
||||||
|
|
||||||
var count = lines.length;
|
var count = lines.length;
|
||||||
var keyNo = 0;
|
var keyNo = 0;
|
||||||
|
|
||||||
process.stdout.write("Start importing " + count + " keys...\n");
|
process.stdout.write("Start importing " + count + " keys...\n");
|
||||||
lines.forEach(function(l) {
|
lines.forEach(function(l) {
|
||||||
if (l.substr(0, 27) == "REPLACE INTO store VALUES (") {
|
if (l.substr(0, 27) == "REPLACE INTO store VALUES (") {
|
||||||
var pos = l.indexOf("', '");
|
var pos = l.indexOf("', '");
|
||||||
var key = l.substr(28, pos - 28);
|
var key = l.substr(28, pos - 28);
|
||||||
var value = l.substr(pos + 4);
|
var value = l.substr(pos + 3);
|
||||||
value = value.substr(0, value.length - 3);
|
value = value.substr(0, value.length - 2);
|
||||||
db.db.set(key, value, null);
|
console.log("key: " + key + " val: " + value);
|
||||||
keyNo++;
|
console.log("unval: " + unescape(value));
|
||||||
if (keyNo % 1000 == 0) {
|
db.set(key, unescape(value), null);
|
||||||
process.stdout.write(" " + keyNo + "/" + count + "\n");
|
keyNo++;
|
||||||
|
if (keyNo % 1000 == 0) {
|
||||||
|
process.stdout.write(" " + keyNo + "/" + count + "\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
process.stdout.write("\n");
|
||||||
process.stdout.write("\n");
|
|
||||||
|
|
||||||
db.db.doShutdown(function() {
|
db.doShutdown(function() {
|
||||||
log("finished, imported " + keyNo + " keys.");
|
log("finished, imported " + keyNo + " keys.");
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function log(str)
|
function log(str)
|
||||||
{
|
{
|
||||||
console.log((new Date().getTime() - startTime)/1000 + "\t" + str);
|
console.log((new Date().getTime() - startTime)/1000 + "\t" + str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unescape = function(val) {
|
||||||
|
// value is a string
|
||||||
|
if (val.substr(0, 1) == "'") {
|
||||||
|
val = val.substr(0, val.length - 1).substr(1);
|
||||||
|
|
||||||
|
return val.replace(/\\[0nrbtZ\\'"]/g, function(s) {
|
||||||
|
switch(s) {
|
||||||
|
case "\\0": return "\0";
|
||||||
|
case "\\n": return "\n";
|
||||||
|
case "\\r": return "\r";
|
||||||
|
case "\\b": return "\b";
|
||||||
|
case "\\t": return "\t";
|
||||||
|
case "\\Z": return "\x1a";
|
||||||
|
default: return s.substr(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// value is a boolean or NULL
|
||||||
|
if (val == 'NULL') {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (val == 'true') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (val == 'false') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// value is a number
|
||||||
|
return val;
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue