У меня проблема с хранением данных JSON в таблице MySQL с помощью NodeJS.Хранить данные JSON в таблице MySQL
JSON данных выглядит следующим образом:
{
"header":
{
"file1":0,
"file2":1,
"subfiles":{
"subfile1":"true",
"subfile2":"true",
}
},
"response":
{
"number":678,
"start":0,
"docs":[
{
"id":"d3f3d",
"code":"l876s",
"country_name":"United States",
"city":"LA"
},
{
"id":"d2f2d",
"code":"2343g",
"country_name":"UK",
"city":"London"
}
]
}
}
, и я хочу сохранить только поля в DOCS массива (или объекта ответа). Я пытаюсь получить данные и хранить в MySQL таким образом:
var express = require('express');
var mysql = require('mysql');
var request = require("request");
var app = express();
app.use('/', express.static('../client/app'));
app.use('/bower_components', express.static('../client/bower_components/'));
var server = require('http').createServer(app);
var bodyParser = require('body-parser');
app.jsonParser = bodyParser.json();
app.urlencodedParser = bodyParser.urlencoded({ extended: true });
//mysql connection setup
var connection = mysql.createConnection({
host : "localhost",
port: "3306",
user : "root",
password : "root",
database : "db",
multipleStatements: true
});
request('http://url.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
//console.log(body) //
}
var data = body.toString();
console.log(string);
var query = connection.query('INSERT INTO table SET ?', data, function(err, result) {
// Finish
});
console.log(query.sql);
});
server.listen(3000, function() {
'use strict';
});
В журнале я получил
INSERT INTO table SET '{\n \"header\":{\n \"file1\":0,\n \"file2\":1,\n \"subfiles\":{\n \"subfile1\":\"true\",\n \"subfile2\":\"true\"}},\n \"response\":{\"number\":678,\"start\":0,\"docs\":[\n {\n \"id\":\"d3f3d\",\n \"code\":\"l876s\",\n....
выходного сообщения, но у меня нет данных в MySQL таблицы. Нужно ли указывать каждый столбец в запросе?
Хорошо, тогда мне нужно вставить данные, хранящиеся в responseJson. Нужно ли определять все столбцы в sql-запросе (у меня все еще нет данных в db)? Например, 'connection.query (" INSERT INTO table VALUES ('',?,?,? ...), [id, country_name, city ....], function (err, rows, fields) ' – corry
@ corry: Я думаю, вы можете использовать один из них: 'query ('INSERT INTO tbl_name (col) VALUES (?)', 'value')' или 'query ('INSERT INTO tbl_name SET col =?', 'value') 'или ' query ('INSERT INTO tbl_name SET?', {col: 'value'}) ' –
Я пытаюсь вставить данные в db [как описано здесь] (http://stackoverflow.com/questions/8899802/how-do-i-do-a-bulk-insert-in-mysql-using-node-js? lq = 1), и я получил сообщение об ошибке 'Ошибка: ER_PARSE_ERROR: у вас возникла ошибка в синтаксисе SQL; руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с '' {{\ "id \": \ "d3f3d \", \ "code \": \ "'в строке 1.' Определяется запрос:' var sql = "INSERT INTO table (id, code, country_name, city) VALUES?"; 'Вы знаете, где может быть причина проблемы? Спасибо. – corry