数据导入到MySQL
我有以下问题:
我解析了一个CSV文件,然后数据应该自动上传到MySQL数据库。现在的问题是我的数据类型为“ varchar”或“ decimal”。在stackoverflow上,我已经获得帮助,如果数据类型为“十进制”,则记录中仅存在数字。
记录(记录)如下所示:
[ { 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.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);
希望您能帮助我:)
最诚挚的问候,
弗雷德里克
回答如下:要检查值是否包含有效数字,请将其强制转换为Number
。如果值是数字,则该转换的结果将是该类型的数字。然后使用isNaN
检查结果是否为(不是)数字。如果结果为假,则为数字。为了简化此操作,请预先添加!
以否定最终结果。
这里是一个例子:
!isNaN(Number("12"))
// returns true (valid number)
!isNaN(Number("1x2"))
// returns false (no valid number)
!isNaN(Number(12))
// returns true (valid number)
这些是字符串“ 12”的步骤:
!isNaN(Number("12")); // returns true
Number("12"); // returns 12
isNaN(12); // returns false
!false; // returns true
所以您的情况可能是
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]]}"`;
}
}