我有以下问题:
我自动将数据从 CSV 文件传输到 SQL 数据库。在此数据库中,并非每种数据类型都是“varchar”,但有时是“decimal”或类似的数据类型。首先,重要事项的表示(在控制台中):
新记录数组:
[ { Referenz: 'Beispieltext1',
Client: 'Beispieltext2',
Clienthauptgruppe: 'Beispieltext3',
Kontrahent: 'Beispieltext4',
Kontrahentenhauptgruppe: 'Beispieltext5',
Bank: 'Beispieltext6',
Back_to_Back: 'Beispieltext7',
Int_Ext: 'Beispieltext8',
Valuta: 'Beispieltext9',
Geschaeftsart: 'Beispieltext10',
Kauf_Verkauf: 'Beispieltext11',
Wrg: 'Beispieltext12',
Diff_In_Hauswaehrung: 'Beispieltext13,
Hauswaehrung: 'Beispieltext14',
Marktwert_NPV: 'Beispieltext15' },
{ Referenz: 'Beispieltext1',
Client: 'Beispieltext2',
Clienthauptgruppe: 'Beispieltext3',
Kontrahent: 'Beispieltext4',
Kontrahentenhauptgruppe: 'Beispieltext5',
Bank: 'Beispieltext6',
Back_to_Back: 'Beispieltext7',
Int_Ext: 'Beispieltext8',
Valuta: 'Beispieltext9',
Geschaeftsart: 'Beispieltext10',
Kauf_Verkauf: 'Beispieltext11',
Wrg: 'Beispieltext12',
Diff_In_Hauswaehrung: 'Beispieltext13,
Hauswaehrung: 'Beispieltext14',
Marktwert_NPV: 'Beispieltext15' },
{ Referenz: 'Beispieltext1',
Client: 'Beispieltext2',
Clienthauptgruppe: 'Beispieltext3',
Kontrahent: 'Beispieltext4',
Kontrahentenhauptgruppe: 'Beispieltext5',
Bank: 'Beispieltext6',
Back_to_Back: 'Beispieltext7',
Int_Ext: 'Beispieltext8',
Valuta: 'Beispieltext9',
Geschaeftsart: 'Beispieltext10',
Kauf_Verkauf: 'Beispieltext11',
Wrg: 'Beispieltext12',
Diff_In_Hauswaehrung: 'Beispieltext13,
Hauswaehrung: 'Beispieltext14',
Marktwert_NPV: 'Beispieltext15' }]
键Y:
[ 'Referenz',
'Client',
'Clienthauptgruppe',
'Kontrahent',
'Kontrahentenhauptgruppe',
'Bank',
'Back_to_Back',
'Int_Ext',
'Valuta',
'Geschaeftsart',
'Kauf_Verkauf',
'Wrg',
'Diff_In_Hauswaehrung',
'Hauswaehrung',
'Marktwert_NPV' ]
这是 DATA_TYPE:
[ { COLUMN_NAME: 'Referenz', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Client', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Clienthauptgruppe', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Kontrahent', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Kontrahentenhauptgruppe', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Bank', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Back_to_Back', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Int_Ext', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Valuta', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Geschaeftsart', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Kauf_Verkauf', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Wrg', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Diff_in_Hauswaehrung', DATA_TYPE: 'decimal' },
{ COLUMN_NAME: 'Hauswaehrung', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Marktwert_NPV', DATA_TYPE: 'decimal' } ]
这里是重要的循环
newrecordarray.forEach(entry => {
if ( HERE IS THE PROBLEM! ) {
values = `"${entry[keysY[0]]}"`
} else {
values = `${entry[keysY[0]]}`
}
for (var i = 1; i < keysY.length; i++) {
if ( HERE IS THE PROBLEM! ) {
values += `,"${entry[keysY[i]]}"`
} else {
values += `,${entry[keysY[i]]}`
}
}
//console.log(values)
现在我想检查“if循环”,例如“Referenz”是否具有DATA_TYPE“varchar”,然后将值放在引号中,如果它具有例如DATA_TYPE“decimal”,则将值放入不带引号的值引号。
在 SQL 中它看起来像这样:
INSERT INTO "Tablename"(表名称...)VALUES ("Beispieltext1", "Beispieltext2","...","...",...,"...",.. .)
我不知道如何轻松解决这个问题。
致以诚挚的问候
弗雷德里克
最佳答案
你可以试试这个:
var rec = [ { Referenz: 'Beispieltext1',
Client: 'Beispieltext2',
Clienthauptgruppe: 'Beispieltext3',
Kontrahent: 'Beispieltext4',
Kontrahentenhauptgruppe: 'Beispieltext5',
Bank: 'Beispieltext6',
Back_to_Back: 'Beispieltext7',
Int_Ext: 'Beispieltext8',
Valuta: 'Beispieltext9',
Geschaeftsart: 'Beispieltext10',
Kauf_Verkauf: 'Beispieltext11',
Wrg: 'Beispieltext12',
Diff_In_Hauswaehrung: 'Beispieltext13',
Hauswaehrung: 'Beispieltext14',
Marktwert_NPV: 'Beispieltext15' }];
var dataSet = [ { COLUMN_NAME: 'Referenz', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Client', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Clienthauptgruppe', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Kontrahent', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Kontrahentenhauptgruppe', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Bank', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Back_to_Back', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Int_Ext', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Valuta', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Geschaeftsart', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Kauf_Verkauf', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Wrg', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Diff_in_Hauswaehrung', DATA_TYPE: 'decimal' },
{ COLUMN_NAME: 'Hauswaehrung', DATA_TYPE: 'varchar' },
{ COLUMN_NAME: 'Marktwert_NPV', DATA_TYPE: 'decimal' } ]
dataSet = dataSet.reduce( (nObj, obj) => {
nObj[obj.COLUMN_NAME] = obj.DATA_TYPE;
return nObj;
},{})
var numberPattern = /\d+/g;
rec = rec.map( (obj) => {
return Object.keys(obj).reduce( (nObj, key) => {
if(dataSet[key] != 'varchar')
nObj[key] = parseFloat(obj[key].match( numberPattern ).join(''));
else
nObj[key] = obj[key];
return nObj;
},{})
})
rec;
关于javascript - 匹配两个查询以检查数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57971817/