sql server net Comment importer des données d'un appel REST, json feed dans une base de données SQLite sur un MAC?



sqlite net bundle (2)

J'ai des données sur mon serveur dans une base de données SQL Server. Je peux y accéder avec un appel REST dans un Web.API C # ASP.Net que je contrôle et qui renverra des données json. Peut-être que je peux obtenir cela pour retourner d'autres formats de données, mais je n'en suis pas certain. J'ai un accès complet à l'application serveur et au json qu'elle crée.

Sur mon Mac de développement, j'utilise le navigateur de base de données pour SQLite et Xamarin afin de développer une application multi-plateforme. J'ai une petite base de données SQLite créée.

Comment puis-je importer / insérer les données JSON de certaines de mes tables sur le serveur vers des tables de la base de données SQLite que je crée sur mon MAC? Je dois le faire manuellement, mais j'aimerais automatiser le processus d'importation dans un script bash ou quelque chose de similaire que je peux exécuter avec une commande.

J'ai fait des recherches sur ce sujet, mais je ne trouve aucun exemple de la manière de le faire, alors j'ai ouvert une prime dans l'espoir que quelqu'un puisse donner une réponse qui serait d'une grande aide pour moi et pour les autres.


Answer #1

J'utiliserais le noeud js pour écrire un script en utilisant javascript.

installer nodejs. https://nodejs.org/en/download/ ou

brew install node

créer un répertoire pour travailler sur votre projet mkdir myimporter cd myimporter

installer les bibliothèques requises dans le dossier

npm install --save request sqlite3 moment 

npm install -g nodemon

ouvrez le dossier ou app.js avec votre éditeur de texte préféré

enregistrez le code suivant sous le nom 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);    
});

exécuter le terminal suivant pour exécuter le script chaque fois qu'il change, pour le développement / test

nodemon app.js

Answer #2

Au sommet de ma tête, vous avez deux options que vous pouvez faire:

  • Faites une simple application Xamarin.Mac qui le fait. Similaire à la façon dont Windows peut créer une application console. Il suffit d'avoir un bouton et d'appeler à peu près le même code dans votre application xamarin pour télécharger les données et les transférer dans une base de données SQL.
  • Une meilleure option serait d’écrire un "test unitaire" (ou un test d’intégration pour ces peeps hardcore) qui appelle le code existant dans votre application xamarin et l’écrit dans une base de données sqlite sur le partage de fichiers. Ensuite, vous pouvez le faire aussi souvent que vous le souhaitez avec un test unitaire. Cela peut être fait dans votre programme de test dans Xamarin Studio (Visual Studio ou tout autre outil équipé d’un testeur). J'utiliserais soit nUnit, soit xUnit, car ils supportent très bien les plateformes.

Dans ma précédente application, j'avais des tests XUnit qui vérifiaient que les appels d'API fonctionnaient et que d'autres tests garantissaient le bon fonctionnement de mon code SQLite.Net-PCL. Vous pouvez combiner cela en un seul "test" pour télécharger les données dans un db3.

Cela suppose que vous avez extrait votre code. Sinon, vous pouvez simplement le copier et le coller. De toute façon, si vous utilisez des paquets n-pépites x-plat, le code fonctionnera sur une application de bureau ou une application mobile.





xamarin