基于数据表动态更改 SQL 表

本文关键字:SQL 动态 数据表 | 更新日期: 2023-09-27 18:32:35

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

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

谢谢

基于数据表动态更改 SQL 表

正如您所说,您正在从 REST 源获取数据,然后您可以创建一个简单的 ASP 网页应用程序

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

您可以将 JSON 解析为与该源的数据结构相对应的模型类

然后只需使用 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
}