Загрузка базы данных SQL в виде CSV вместо выбранных строк - PullRequest
0 голосов
/ 15 апреля 2019

Я использовал функцию для загрузки некоторых выборок из объекта Lists в качестве CSV.Я хотел бы сделать то же самое для всего источника данных, связанного с объектом Lists, но не уверен, как его масштабировать, например, для работы с 100 000 строк.На кнопке для загрузки данных Списка в виде CSV у меня есть:

var rows = widget.root.descendants.MainTableBody.children._values;
var csvdata = [];

csvdata.push([["Email"],["Last Login"],["Sku ID"],["Sku Name"],["Docs Added Recently"]]);

for (var i in rows) {
  var t = [];
  t.push(rows[i].children.EmailField.text);
  t.push(rows[i].children.LastLoginField.text);
  t.push(rows[i].children.SkuIdField.text);
  t.push(rows[i].children.SkuNameField.text);
  t.push(rows[i].children.DocsAddedField.text);
  csvdata.push(t);
}

console.log(csvdata);
exportToCsv("LMexport",csvdata);

Функция экспорта взята из этого ответа . Мне в основном нужен вариант rows для охвата всеготаблицы, но это много данных.

Схема источника данных, о котором идет речь:

schema

и используемый расчет: schema calculation

Вот как выглядит таблица в пользовательском интерфейсе для справки:

UI screenshot

1 Ответ

0 голосов
/ 15 апреля 2019
  • Записи, полученные из запроса, представляют собой массив объектов
  • . Вы можете использовать .reduce для преобразования их в csv

Фрагмент:

function exportCsv(){
 var query = app.models.Employees.newQuery();
 //query.filters.... use query used to populate the datasource
 var records = query.run(); //[{},{},{}...]
 var csv = records.reduce(function(str, rec){
  var email = rec.Email;
  var login = rec.LastLogin;
  var skuId = rec.SkuId;
  return str + '"' + [email,login,skuId].join('","') + '"\n'; // result: "email","login","skuId"\n
},'');
return csv;
}
...