Подтвердить что ты не робот

Как я могу импортировать данные из вызова REST, json feed в базу данных SQLite на MAC?

У меня есть данные на моем сервере в базе данных SQL Server. Я могу получить доступ к этому вызову REST в С# ASP.Net Web.API, который у меня есть, и он вернет json-данные. Возможно, я могу получить это, чтобы вернуть другие форматы данных, но я не уверен в этом. У меня есть полный доступ к серверному приложению и json, который он создает.

В моей разработке Mac я использую DB Browser для SQLite и Xamarin для разработки многоплатформенного приложения. У меня есть небольшая база данных SQLite.

Как я могу импортировать/вставлять данные JSON из некоторых моих таблиц на сервере в таблицы базы данных SQLite, которые я создаю на своем MAC-адресе? Мне нужно сделать это вручную, но я хотел бы автоматизировать процесс импорта в bash script или что-то подобное, что я могу запустить с помощью команды.

Я исследовал это, но, похоже, не могу найти примеров того, как это сделать, поэтому я открыл щедрость в надежде, что кто-то сможет дать ответ, который будет большой помощью для меня и для других,

4b9b3361

Ответ 1

Сверху моей головы у вас есть два варианта, которые вы можете сделать:

  • Сделайте простое приложение Xamarin.Mac, которое сделает это. Подобно тому, как пользователи Windows могут создавать консольное приложение. Просто имейте одну кнопку и вызывайте почти тот же код в вашем приложении xamarin, чтобы загрузить данные и выгрузить их в sqlite db.
  • Лучшим вариантом было бы написать "unit test" (или тест интеграции для этих хардкорных подглядываний), который вызывает существующий код в вашем приложении xamarin и записывает его в sqlite db on общий ресурс файла. Затем вы можете делать это так часто, как хотите, запустите unit test. Это можно сделать в вашем тестовом бегуне в Xamarin Studio (Visual Studio или что-нибудь, что имеет тестовый бегун). Я бы использовал либо nUnit, либо xUnit, поскольку они поддерживают кросс-платформенную поддержку.

В моем предыдущем приложении у меня были тесты XUnit, которые проверялись, чтобы убедиться, что вызовы API работают и другие тесты, чтобы убедиться, что мой код SQLite.Net-PCL работает. Вы можете объединить это в один "тест", чтобы загрузить данные в db3.

Это предполагает, что вы отделили код. Если нет, вы можете просто скопировать и вставить его. В любом случае, если вы используете пакеты x-plat nuget, код будет работать на настольном или мобильном приложении.

Ответ 2

я использовал бы node js для записи script с помощью javascript.

установить nodejs. https://nodejs.org/en/download/ или

brew install node

создать каталог для работы над вашим проектом mkdir myimporter cd myimporter

установите необходимые библиотеки в папку

npm install --save request sqlite3 moment 

npm install -g nodemon

откройте папку или app.js с помощью вашего любимого текстового редактора

сохраните следующий код как app.js

var request = require('request');
var sqlite3 = require("sqlite3").verbose();
var moment = require("moment");
var url =  'http://www.google.com';
var s, e;



var fs = require("fs");
var file = "test.db";
//var file = process.env.CLOUD_DIR + "/" + "test.db";
var exists = fs.existsSync(file);
var sqlite3 = require("sqlite3").verbose();
var db = new sqlite3.Database(file);

// use same exists from checking if db exists, with assumption that table would exists in a new db.
if(!exists){
    db.run("CREATE TABLE Stuff (thing TEXT)");
}


function saveResultTosqlite3(message){
    var stmt = db.prepare("INSERT INTO Stuff VALUES (?)");
    stmt.run(message);
    stmt.finalize();
}


s = moment();
request(url, function (error, response, body) {
    e = moment();
    var elapsed =e.diff(s,'milliseconds');
    var responseCode = response.statusCode;     

    if (!error && response.statusCode == 200) {    
        console.log("successful request");
    }
    var message = 'request to ' + url + ' returned status code of ' + responseCode.toString() + ' in ' +elapsed.toString() + ' milliseconds'  ;
    console.log(message);
    saveResultTosqlite3(message);    
});

запускайте следующий терминал для запуска script каждый раз, когда он изменяется, для разработки/тестирования

nodemon app.js