Skip to content

Commit

Permalink
Factorizo a separateOneRow() para --fast
Browse files Browse the repository at this point in the history
  • Loading branch information
diegoefe committed Oct 18, 2016
1 parent 06dac3c commit b3e7df7
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 19 deletions.
18 changes: 11 additions & 7 deletions bin/txt-to-sql-run.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,12 +142,16 @@ function fastAnalyzeLines(info) {
return txtToSql.generatePrepareResult(info);
}

function fastInsert(info, line) {
var row = [line].filter(function(ln){ return ln.trim()!==""; })
function fastInsert(outStream, info, line) {
if(line.trim() !=='') {
var row = txtToSql.separateOneRow(info, line);
var row = [line].filter(function(ln){ return ln.trim()!==""; })
.map(function(ln){ return ln.split(info.opts.separator);});
var rows = txtToSql.createAdaptedRows(info, row);
var insertInto = txtToSql.createInsertInto(info);
return txtToSql.createInsertValues(rows, info.columnsInfo).map(function(c) { return insertInto + c + ";"; }).join('\n');
var rows = txtToSql.createAdaptedRows(info, row);
var insertInto = txtToSql.createInsertInto(info);
var insertValues = txtToSql.createInsertValues(rows, info.columnsInfo).map(function(c) { return insertInto + c + ";"; }).join('\n');
outStream.write(insertValues+'\n');
}
}

function fastCreateCreate(info) {
Expand Down Expand Up @@ -202,12 +206,12 @@ function doFast(params, inputBase) {
outStream.write(script.sql);
});
info.lines.forEach(function(ln) {
outStream.write(fastInsert(info, ln)+'\n');
fastInsert(outStream, info, ln);
});
delete info.lines;
}
} else { // more than info.fastMaxLines
outStream.write(fastInsert(info, line)+'\n');
fastInsert(outStream, info, line);
}
}
});
Expand Down
16 changes: 10 additions & 6 deletions lib/txt-to-sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,9 +278,8 @@ function determineDelimiter(info) {
return info;
}

function separateDelimiter(info) {
var splitter = info.delimiter+info.opts.separator+info.delimiter;
var headers = info.headers.split(splitter);
function separateWithDelimiter(info) {
var headers = info.headers.split(info.delimiter+info.opts.separator+info.delimiter);
return info.columnsInfo = headers.map(function(name, index){
return {
name:index===0 ? name.substring(1) : index===headers.length-1 ? name.substring(0, name.length-1) : name,
Expand All @@ -289,15 +288,15 @@ function separateDelimiter(info) {
});
}

function separateSimple(info) {
function separateWithSeparator(info) {
return info.headers.split(info.opts.separator).map(function(name){ return {
name:name,
columnLength:0,
};});
}

function separateColumns(info){
info.columnsInfo = info.delimiter ? separateDelimiter(info) : separateSimple(info);
info.columnsInfo = info.delimiter ? separateWithDelimiter(info) : separateWithSeparator(info);
if(info.opts.columns && 'name' in info.opts.columns[0]) {
if(info.opts.columns.length !== info.columnsInfo.length) {
throw new Error('wrong number of column names: expected '+
Expand All @@ -311,9 +310,13 @@ function separateColumns(info){
return info;
}

function separateOneRow(info, line) {
return line.split(info.opts.separator);
}

function separateRows(info) {
info.rows = info.lines.filter(function(line){ return line.trim()!==""; })
.map(function(line){ return line.split(info.opts.separator);});
.map(function(line){ return separateOneRow(info, line); });
return info;
}

Expand Down Expand Up @@ -656,6 +659,7 @@ txtToSql.determineDelimiter = determineDelimiter;
txtToSql.separateColumns = separateColumns;
txtToSql.transformNames = transformNames;
txtToSql.verifyColumnNames = verifyColumnNames;
txtToSql.separateOneRow = separateOneRow;
txtToSql.separateRows = separateRows;
txtToSql.verifyColumnCount = verifyColumnCount;
txtToSql.determineColumnTypes = determineColumnTypes;
Expand Down
16 changes: 10 additions & 6 deletions web/txt-to-sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,9 +278,8 @@ function determineDelimiter(info) {
return info;
}

function separateDelimiter(info) {
var splitter = info.delimiter+info.opts.separator+info.delimiter;
var headers = info.headers.split(splitter);
function separateWithDelimiter(info) {
var headers = info.headers.split(info.delimiter+info.opts.separator+info.delimiter);
return info.columnsInfo = headers.map(function(name, index){
return {
name:index===0 ? name.substring(1) : index===headers.length-1 ? name.substring(0, name.length-1) : name,
Expand All @@ -289,15 +288,15 @@ function separateDelimiter(info) {
});
}

function separateSimple(info) {
function separateWithSeparator(info) {
return info.headers.split(info.opts.separator).map(function(name){ return {
name:name,
columnLength:0,
};});
}

function separateColumns(info){
info.columnsInfo = info.delimiter ? separateDelimiter(info) : separateSimple(info);
info.columnsInfo = info.delimiter ? separateWithDelimiter(info) : separateWithSeparator(info);
if(info.opts.columns && 'name' in info.opts.columns[0]) {
if(info.opts.columns.length !== info.columnsInfo.length) {
throw new Error('wrong number of column names: expected '+
Expand All @@ -311,9 +310,13 @@ function separateColumns(info){
return info;
}

function separateOneRow(info, line) {
return line.split(info.opts.separator);
}

function separateRows(info) {
info.rows = info.lines.filter(function(line){ return line.trim()!==""; })
.map(function(line){ return line.split(info.opts.separator);});
.map(function(line){ return separateOneRow(info, line); });
return info;
}

Expand Down Expand Up @@ -656,6 +659,7 @@ txtToSql.determineDelimiter = determineDelimiter;
txtToSql.separateColumns = separateColumns;
txtToSql.transformNames = transformNames;
txtToSql.verifyColumnNames = verifyColumnNames;
txtToSql.separateOneRow = separateOneRow;
txtToSql.separateRows = separateRows;
txtToSql.verifyColumnCount = verifyColumnCount;
txtToSql.determineColumnTypes = determineColumnTypes;
Expand Down

0 comments on commit b3e7df7

Please sign in to comment.