Javascript 数据导入到MySQL->;有值与无值

Javascript 数据导入到MySQL->;有值与无值,javascript,node.js,Javascript,Node.js,我有以下问题: 我解析一个CSV文件,然后数据会自动上传到MySQL数据库。现在的问题是,我有数据类型“varchar”或“decimal”。在stackoverflow这里,我已经得到了帮助,如果数据类型是“decimal”,那么记录中只有数字 记录(rec)如下所示: [ { examplename1: 'example1', examplename2: 'example2', examplename3: 'example3', examplename4: 'exa

我有以下问题:

我解析一个CSV文件,然后数据会自动上传到MySQL数据库。现在的问题是,我有数据类型“varchar”或“decimal”。在stackoverflow这里,我已经得到了帮助,如果数据类型是“decimal”,那么记录中只有数字

记录(rec)如下所示:


[ { examplename1: 'example1',
    examplename2: 'example2',
    examplename3: 'example3',
    examplename4: 'example4',
    examplename5: 'example5',
    examplename6: 'example6',
    examplename7: 'example7',
    examplename8: 'example8',
    examplename9: 'example9',
    examplename10: 'example10',
    examplename11: 'example11',
    examplename12: 'example12',
    Diff_In_Hauswaehrung: -103600, 
    examplename14: 'example14',
    Marktwert_NPV: -111146.16,
    examplename16: 'example16' },
  { examplename1: 'example1',
    examplename2: 'example2',
    examplename3: 'example3',
    examplename4: 'example4',
    examplename5: 'example5',
    examplename6: 'example6',
    examplename7: 'example7',
    examplename8: 'example8',
    examplename9: 'example9',
    examplename10: 'example10',
    examplename11: 'example11',
    examplename12: 'example12',
    Diff_In_Hauswaehrung: 53851.33, 
    examplename14: 'example14',
    Marktwert_NPV: 47328.16,
    examplename16: 'example16' } ]


您可以在“Diff_in_Hauswaehrung”和“Marktwert_NPV”中看到一个没有“”的数字

在控制台中,它们也以黄色显示

现在我想检查是否有这样一个数字,或者只有一个带“”的字符串,如果有一个数字,那么我希望SQL查询中该值周围没有“”

现在我有了一个forEach循环,其中所有值都以“”上传。。。但是没有区别。。。keysY只是rec的键


 rec.forEach(entry => {

                    values = `"${entry[keysY[0]]}"`

                    for (var i = 1; i < keysY.length; i++) {
                        values += `,"${entry[keysY[i]]}"`
                    }

                    //console.log(values)

                    var sql = `INSERT INTO ${richtigername} (${namen}) VALUES (${values})`;

                    connection.query(sql, [values], (error, response) => {

                    console.log(error || response);


rec.forEach(条目=>{
值=`“${entry[keysY[0]]}”`
对于(变量i=1;i{
console.log(错误| |响应);
我希望你能帮助我:)

致以最良好的祝愿


Frederic

检查值是否包含有效的数字,将其转换为
数字
。如果值不是数字,则转换结果为
,否则为
数字
。接下来,检查结果是否为(非)使用
的数字为NaN
。如果结果为假,则为数字。为简化此过程,请事先添加一个
,以否定最终结果

下面是一个例子:

!isNaN(Number("12.2"))
// returns true (valid number)

!isNaN(Number("asdf12"))
// returns false (no valid number)

!isNaN(Number(12))
// returns true (valid number)

因此,在您的情况下,这应该可以做到:

for (var i = 1; i < keysY.length; i++) {
    if(!isNaN(Number(${entry[keysY[i]]}) {
        // it's a number, no quotes:
        values += `,${entry[keysY[i]]}`;
    } else {
        // it's not a number (NaN) add quotes:
        values += `,"${entry[keysY[i]]}"`;
    }
}
for(变量i=1;i
谢谢:)但我有空列,我用typeof解决它,因为空列是“字符串”。使用isNaN(Number()时,空列也显示为“false”,但必须是“true”,或者仅使用Number()时空列不是NaN

rec.forEach(entry => {

                    if (typeof entry[keysY[0]] == "string") {

                        values = `"${entry[keysY[0]]}"`

                    } else {

                        values = entry[keysY[0]]

                    }

                    for (var i = 1; i < keysY.length; i++) {


                        if (typeof entry[keysY[i]] == "string") {


                            values += `,"${entry[keysY[i]]}"`;

                        } else {

                            values += `,${entry[keysY[i]]}`;
                        }

rec.forEach(条目=>{
if(输入的类型[keysY[0]]=“字符串”){
值=`“${entry[keysY[0]]}”`
}否则{
值=条目[keysY[0]]
}
对于(变量i=1;i
只有当我想用引号或者在前面加逗号时,才需要$和`