Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将REST调用、json提要中的数据导入MAC上的SQLite数据库?_Sql Server_Node.js_Macos_Sqlite_Xamarin - Fatal编程技术网

Sql server 如何将REST调用、json提要中的数据导入MAC上的SQLite数据库?

Sql server 如何将REST调用、json提要中的数据导入MAC上的SQLite数据库?,sql-server,node.js,macos,sqlite,xamarin,Sql Server,Node.js,Macos,Sqlite,Xamarin,我的服务器上有SQL server数据库中的数据。我可以通过REST调用访问我控制的C#ASP.netweb.API,它将返回json数据。可能我可以让它返回其他格式的数据,但我不确定。我可以完全访问服务器应用程序及其创建的json 在我的开发Mac上,我正在使用SQLite和Xamarin的DB浏览器开发一个多平台应用程序。我创建了一个小的SQLite数据库 如何将JSON数据从服务器上的一些表导入/插入到MAC上创建的SQLite数据库中的表中?我需要手动执行此操作,但我希望将导入到bash

我的服务器上有SQL server数据库中的数据。我可以通过REST调用访问我控制的C#ASP.netweb.API,它将返回json数据。可能我可以让它返回其他格式的数据,但我不确定。我可以完全访问服务器应用程序及其创建的json

在我的开发Mac上,我正在使用SQLite和Xamarin的DB浏览器开发一个多平台应用程序。我创建了一个小的SQLite数据库

如何将JSON数据从服务器上的一些表导入/插入到MAC上创建的SQLite数据库中的表中?我需要手动执行此操作,但我希望将导入到bash脚本或类似命令中的过程自动化


我对此进行了研究,但似乎找不到任何例子来说明如何做到这一点,因此我提出了一项悬赏,希望有人能给出一个对我和其他人都有很大帮助的答案

在我看来,你有两个选择:

  • 制作一个简单的Xamarin.Mac应用程序来实现这一点。类似于windows用户制作控制台应用程序的方式。只需让它有一个按钮,并在xamarin应用程序中调用几乎相同的代码,下载数据并将其转储到sqlite db中
  • 一个更好的选择是编写一个“单元测试”(或那些核心peep的集成测试),调用xamarin应用程序中现有的代码,并将其写入文件共享上的sqlite db。然后,您可以通过运行单元测试随时执行此操作。这可以在Xamarin Studio(Visual Studio或任何具有测试运行程序的工具)中的测试运行程序中完成。我会使用nUnit或xUnit,因为它们提供了强大的跨平台支持
在我以前的应用程序中,我进行了XUnit测试以确保API调用正常工作,并进行了其他测试以确保我的SQLite.Net-PCL代码正常工作。您可以将其合并到一个“测试”中,将数据下载到db3中


这假设您将代码抽象出来。如果没有,您可以复制并粘贴它。无论哪种方式,如果您使用的是x-plat nuget软件包,代码将在桌面或移动应用程序上运行。

我将使用node js使用javascript编写脚本

安装nodejs。或

创建用于处理项目的目录 mkdir我的进口商 cd我的进口商

在文件夹中安装所需的库

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);    
});
运行以下终端,以便在每次脚本更改时运行脚本,以进行开发/测试

nodemon app.js

这似乎真的是一个终极的“请为我做我的工作”的问题,它甚至似乎不是来自一个学生。当然,我必须添加一个经典的SO问题:“您尝试了什么?”一般来说,通用的简单解决方案是用JSON下拉数据,将其转换为SQL insert语句,并对SQLite执行这些语句。我曾尝试在internet上对此进行研究,但没有找到任何东西或任何关于如何正常执行的示例。您建议使用什么方法将JSON转换为SQL并在MAC上执行这些操作。我只有在Windows PowerShell中运行代码的经验,我希望得到关于如何在MAC上运行代码的建议。这很公平,尽管我仍然相信这个问题的范围远远超出了预期的目的。FWWW,我将考虑使用NoDE.js,特别是如果您有任何JavaScript熟悉的话。它适用于该任务,并且有许多关于该任务各个部分的示例。我还认为你会得到更多带有语言标签的回复。仅供参考-非常巧合的时间-我还没有阅读全部故事,但根据你所说的技能,这(OSX上的Powershell)会是有用的消息吗@艾伦:你是想进行初始导入还是持续更新?谢谢你的建议。我今天就开始研究这些。
nodemon app.js