Javascript 数据导入到MySQL->;有值与无值
我有以下问题: 我解析一个CSV文件,然后数据会自动上传到MySQL数据库。现在的问题是,我有数据类型“varchar”或“decimal”。在stackoverflow这里,我已经得到了帮助,如果数据类型是“decimal”,那么记录中只有数字 记录(rec)如下所示:Javascript 数据导入到MySQL->;有值与无值,javascript,node.js,Javascript,Node.js,我有以下问题: 我解析一个CSV文件,然后数据会自动上传到MySQL数据库。现在的问题是,我有数据类型“varchar”或“decimal”。在stackoverflow这里,我已经得到了帮助,如果数据类型是“decimal”,那么记录中只有数字 记录(rec)如下所示: [ { examplename1: 'example1', examplename2: 'example2', examplename3: 'example3', examplename4: 'exa
[ { 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
只有当我想用引号或者在前面加逗号时,才需要$和`