使用单个存储过程将不同的数据导入到不同的表

时间:2018-08-11 14:19:50

标签: sql .net sql-server ssis

我正处于应用程序的设计阶段,我具有将数据导入SQL Server数据库的强大功能。由于数据库中有许多表,因此我想避免使用基于常规的方法来为每个Import创建模型并编写存储过程。有没有一种方法可以用来为不同的表创建单个存储过程并将数据插入其中?

注意:各表的列将有所不同。

预先感谢

2 个答案:

答案 0 :(得分:0)

好吧,我会坚持不鼓励它的评论,但另一方面,如果此过程非常简单,并且维护工作将转移到JSON创建者,则可以这样操作:

declare @tablename as nvarchar(max)
declare @json as nvarchar(max)

declare @query as nvarchar(max)

set @tablename = (SELECT TableName FROM YourAllowedTableNamesList WHERE Tablename = @tablename)

Set @query = 
  'Insert into ' + @tablename + 
  'SELECT * FROM OPENJSON(' + @json + ')'

Exec (@query)

答案 1 :(得分:0)

是的,我在目前的商店做过这样的事情。您的问题太笼统了,因此我仅向您简要介绍我们所做的事情。

我们编写了一个控制台应用程序,该应用程序从元表获取SQL命令,并在源代码上将其执行到内存DataTable中。然后,将这些数据批量插入到目标数据库的登台表中。

然后,我们运行一个通用合并过程,该过程查看系统表以获取最终目标表的主键和数据类型,并使用动态sql构造INSERT和UPDATE语句。

尽管其他人发出了善意的警告,但它确实对我们有效,尽管它确实存在一些局限性,例如无法以通用方式处理BLOB数据类型。我们可能还没有遇到其他限制。