动态更改基于DataTable的SQL表

时间:2016-01-30 09:57:21

标签: c# sql-server

我定期从休息源获取数据,并希望将其复制到SQL表中。使用SQLBulk副本很容易。 我正在努力解决的问题是我从feed获得的字段可能会更改,我希望能够动态地向表中添加任何新列。任何不再存在的列我需要留在表中。我可以简单地将它们添加到数据表中。

我的问题。我有什么选择可以做到这一点。是否有任何免费的第三方.net框架可以执行此操作或如何手动编写此框架。 必须全部用.NET完成。

由于

1 个答案:

答案 0 :(得分:0)

正如您所说,您正在从休息源获取数据,那么您可以创建一个简单的ASP WebPages应用程序

添加一个页面,您将在其中调用“Rest Feed”。 现在Rest Feed提供什么格式 主要使用JSON

您可以将JSON解析为与该Feed的数据结构相对应的Model Class

然后只需使用SQLConnection,SQLCommand将数据插入到底层数据库

这是一个可以改变的示例代码

string siteContent = string.Empty;
string url = "http://www.RESTFEEDURL.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

using(HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using(Stream responseStream = response.GetResponseStream())
using(StreamReader streamReader = new StreamReader(responseStream))
{
    siteContent = streamReader.ReadToEnd();
}
//NOW PARSE THE DATA AND SEND TO DATABASE HERE
//data is in siteContent

//now you want to decode the data and get all the column names
var keyArray = Ext.Object.getKeys(Ext.JSON.decode(siteContent));

//if suppose data has following format
//{"ID":"1","name":"google","IP":"69.5.33.22","active":"true"}
//{"ID":"2","name":"bing","IP":"70.5.232.33","active":"false"}
console.log(keyArray);
// ["ID","name","IP","active"]

now 
foreach(var item as keyArray)
{
sql = "IF COL_LENGTH('TABLENAME', item) IS NULL alter table [TABLENAME] add [item] int default 0 NOT NULL"
//run this sql query using sql command and see the magic
}