Sql server 如何将REST调用、json提要中的数据导入MAC上的SQLite数据库?
我的服务器上有SQL server数据库中的数据。我可以通过REST调用访问我控制的C#ASP.netweb.API,它将返回json数据。可能我可以让它返回其他格式的数据,但我不确定。我可以完全访问服务器应用程序及其创建的json 在我的开发Mac上,我正在使用SQLite和Xamarin的DB浏览器开发一个多平台应用程序。我创建了一个小的SQLite数据库 如何将JSON数据从服务器上的一些表导入/插入到MAC上创建的SQLite数据库中的表中?我需要手动执行此操作,但我希望将导入到bash脚本或类似命令中的过程自动化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
我对此进行了研究,但似乎找不到任何例子来说明如何做到这一点,因此我提出了一项悬赏,希望有人能给出一个对我和其他人都有很大帮助的答案 在我看来,你有两个选择:
- 制作一个简单的Xamarin.Mac应用程序来实现这一点。类似于windows用户制作控制台应用程序的方式。只需让它有一个按钮,并在xamarin应用程序中调用几乎相同的代码,下载数据并将其转储到sqlite db中
- 一个更好的选择是编写一个“单元测试”(或那些核心peep的集成测试),调用xamarin应用程序中现有的代码,并将其写入文件共享上的sqlite db。然后,您可以通过运行单元测试随时执行此操作。这可以在Xamarin Studio(Visual Studio或任何具有测试运行程序的工具)中的测试运行程序中完成。我会使用nUnit或xUnit,因为它们提供了强大的跨平台支持
这假设您将代码抽象出来。如果没有,您可以复制并粘贴它。无论哪种方式,如果您使用的是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