2016-12-02 13 views
3

Ich füge JSON-Daten mit NodeJs in MariaDB ein. Fehler beim Einfügen von Daten. Bitte geben Sie an, aus welchem ​​Grund ein Fehler auftritt. Eigentlich Spalte data1 keine leeren oder Null-Werte. Warum bekomme ich unter Fehler?Wie fügt man Json-Daten mit Nodejs in MariaDB ein?

{ [Error: Column 'data1' cannot be null] code: 1048 } 

Tabellenstruktur

CREATE TABLE `from_excel` (
    `ID` INT(11) NOT NULL AUTO_INCREMENT, 
    `data1` VARCHAR(50) NULL DEFAULT NULL, 
    `data2` VARCHAR(100) NULL DEFAULT NULL, 
    PRIMARY KEY (`ID`) 
) 
COLLATE='latin1_swedish_ci' 
ENGINE=InnoDB 
; 

-Code, die ich verwende Daten einzufügen.

var Client = require('mariasql'); 
var c = new Client({ 
    host  : 'localhost', 
    user  : 'xxxx', 
    password : 'xxxx', 
    db : 'Metrics' 
}); 




const workbook = xlsx.readFile(__dirname + '/test.xlsx'); 
const worksheet = workbook.Sheets[workbook.SheetNames[0]]; 
var json=xlsx.utils.sheet_to_json(worksheet); 
console.log(json.length); 
     for(var i=0;i<json.length;i++) 
    { 
     var post = {data1: json[i].data1, data2: json[i].data2}; 

     var sql = c.query('INSERT INTO elements_from_excel (data1,data2) VALUES (?,?)', post, function(err, result) { 
      console.log(sql); 
     if(err){console.log(err);} 
      else {console.log("success");} 

    }); 

    } 
    c.end(); 
+0

Soll der JSON als Zeichenfolge eingefügt werden? Oder sind die Spalten "data1" und "data2", in die die Werte eingefügt werden sollen? –

+0

Ja, möchte JSON in zwei Spalten der Tabelle einfügen. erster Spaltenname data1 und zweiter Spaltenname data2. – user2848031

Antwort

0

Es sollte INSERT INTO from_excel VALUES (?) sein, obwohl es durchaus möglich, dass Sie andere Fehler auftreten werden, wenn Sie diese eine beheben.

+0

Danke. Guter Fang! Jetzt bekomme ich {[Fehler: Spaltenanzahl stimmt nicht mit der Wertanzahl in Zeile 1 überein] Code: 1136} – user2848031

+0

Das liegt daran, dass Sie einen Wert einfügen, aber anscheinend mehr als eine Spalte in der Tabelle haben. Dann sollte es 'INSERT INTO from_excel (column_name) VALUES (?)' Sein. Oder, wenn es zwei Spalten ist, dann 'INSERT INTO von _excel (data1, data2) VALUES (?,?)' Und bind entsprechend. – elenst

+0

Danke. Nun werden nur NULL-Werte eingefügt. Also habe ich nicht Null in der Tabellenstruktur gemacht und es gibt einen Fehler data1 kann nicht null sein] code: 1048.But kein Nullwert in der Spalte data1. Bitte beraten. – user2848031

0

Stellen Sie sicher, dass die Funktion, die Sie anrufen, genau die Art von Daten empfängt, die sie erwarten.

0

es auf diese Weise versuchen:

var post = {data1: json[i].data1, data2: json[i].data2}; 

var sql = c.query('INSERT INTO elements_from_excel (data1,data2) VALUES (:data1, :data2)', post, function(err, result) { ... }) 

oder

var post = [json[i].data1, json[i].data2]; 

var sql = c.query('INSERT INTO elements_from_excel (data1,data2) VALUES (?,?)', post, function(err, result) { 
0

Was passieren könnte, ist, dass die dazu führt, dass Lauf Insert-Anweisung ist wie folgt: Der Ersatz

INSERT into from_excel (data1, data2) VALUES (`data1` = \'data1value\', `data2` = \'value\', ?) 

Versuchen Abfragezeichenfolge mit dem folgenden stattdessen:

var post = {data1: json[i].data1, data2: json[i].data2}; 

var sql = c.query('INSERT INTO from_excel SET ?', post, function(err, result) { 
      console.log(sql); 
     if(err){console.log(err);} 
      else {console.log("success");} 
Verwandte Themen