· 8 years ago · Nov 20, 2017, 05:58 AM
1let fs = require("fs");
2
3fs.readFile("./in.txt", "utf8", (err, data) => {
4 let lines = data.split("\r\n");
5 let name = lines[0];
6 let colNames = lines[1].split("\t");
7 let colTypes = lines[2].split("\t").map(val => {
8 let ret = "text";
9
10 if (/^(\d+-)+\d+$/.test(val)) {
11 ret = "date";
12 } else if (!isNaN(parseInt(val))) {
13 ret = "real";
14 }
15
16 return ret;
17 });
18 let cols = "";
19 let vals = "";
20 let output = `\
21CREATE TABLE IF NOT EXISTS ${name} (
22:cols);
23
24INSERT INTO ${name} VALUES
25:vals`;
26
27 colNames.forEach((col, i) => {
28 cols += `\t${col} ${colTypes[i]}${i === colNames.length - 1 ? "" : ","}\n`
29 });
30 lines = lines.slice(2);
31 lines.forEach((dataLine, i) => {
32 let dataArr = dataLine.split("\t");
33 let lastLine = i === lines.length - 1;
34
35 vals += "\t("
36 dataArr.forEach((val, j) => {
37 let last = j === dataArr.length - 1;
38 let formattedVal;
39
40 if (val) {
41 formattedVal = colTypes[j] === "real" ? val : `'${val}'`;
42 } else {
43 formattedVal = "NULL";
44 }
45
46 vals += `${formattedVal}${last ? "" : ", "}`
47 });
48 vals += `)${lastLine ? ";" : ","}\n`
49 });
50 output = output.replace(":cols", cols).replace(":vals", vals);
51
52 fs.writeFile(`${name}.sql`, output, (err, data) => console.log(err));
53});