2015-05-18 3 views
-1

Этот вопрос касается дизайна наилучшего способа преобразования результата SQL-запроса в JSON. Прямо сейчас я просматриваю результаты одного запроса (пользователей) и делаю отдельные запросы для обучения и использования каждого пользователя для присоединения в виде массива JSON переменной длины (вариант 2 ниже). Я не уверен, что способ, которым я это делаю, является подходящим решением, или если предпочтительным будет анализ таблицы соединений. Вот моя проблема:Преобразование больших запросов sql в json

ВАРИАНТ 1: Я мог бы использовать соединения и получить что-то вроде:

user | employment | position  | education | degree 
john | BCG   | consultant  | harvard  | MBA 
john | BCG   | consultant  | ut Austin | bs 
john | White house | speechwriter | harvard  | MBA 
john | White house | speechwriter | ut Austin | bs 
john | Papa Johns | delivery boy | harvard  | MBA 
john | Papa Johns | delivery boy | ut Austin | bs 
rob | google  | engineer  | ut Austin | bs 
rob | dropbox  | engineer  | ut Austin | bs 

ВАРИАНТ 2: Я мог бы альтернативно сделать запрос для пользователей, которые дали бы что-то вроде:

user 
john 
rob 

, а затем может перебрать тех пользователей в Java, а затем сделать запрос для каждого, то есть для джон я бы получить:

employment  | postion 
BCG   | consultant 
whitehouse  | speechwriter 
papa johns  | delivery boy 
.... and a similar one for education. 

Этот второй вариант упрощает преобразование его в json, но мне также нужно сделать несколько SQL-запросов для каждого пользователя, каждый раз открывая соединение. Для первого варианта я не совсем уверен, как бы преобразовать это в json, но это должно быть выполнимо.

Если кто-нибудь может сообщить мне, что было бы лучшей практикой, я бы очень признателен. Благодаря!

+0

Прошу показать некоторые усилия. Какой код вы пробовали? –

+1

просто используйте какой-то ORM или другой, чтобы сделать работу для вас. –

+0

Jorge, это скорее вопрос дизайна, поэтому я не думал, что код будет необходим. Я реализовал второй вариант, и он работает, но я просто не уверен, что он менее эффективен, чем занятие в области образования и занятости, а затем разобрал это, чтобы создать JSON-представление данных. – Mark

ответ

0

Возможно ли использование Node.js?

Вы можете запросить Mysql с помощью сценария узла. Результатом запроса будет объект JavaScript, который можно легко преобразовать в файл JSON и сохранить на диск.

Требуемые

  • NodeJs
  • npm install mysql

Node Script (непроверенные!)

var mysql = require('mysql'), //mysql connector 
    fs = require('fs'), //file system 
    data = []; 

//connect to MySQL 
var connection = mysql.createConnection(
    { 
     host  : 'localhost', 
     user  : 'your-username', 
     password : 'your-password', 
     database : 'db-name', 
    } 
); 

connection.connect(); 

var queryString = 'SELECT * FROM myTable'; 

//query MySQL 
connection.query(queryString, function(err, rows, fields) { 
    if (err) throw err; 

    //save result to local variable 
    data = rows; 
}); 

connection.end(); 

var outputFilename = '/tmp/my.json', 
    jsonString = JSON.stringify(data, null, 2); //extra params for pretty printing 

//save json to file 
fs.writeFile(outputFilename, jsonString, function(err)   { 
    if(err) { 
     console.log(err); 
    } else { 
     console.log("JSON saved to " + outputFilename); 
    } 
}); 

Если запрос является слишком большим, вам может изменить код, чтобы добавить строки в файл (вместо writeFile), а также сначала запросить общий объем запроса, затем прочитать фрагменты строк и повторить до тех пор, пока не будут найдены все строки od в запросе

+0

Hi Thiago, к сожалению нет. Я мог бы переключиться на узел по линии, но теперь бэкэнд написан на Java. – Mark

Смежные вопросы