首页 > 解决方案 > SQL Server 根据模板或现有表创建具有不同表名的动态表

问题描述

我的团队正在创建一个大容量数据处理工具。这个想法是获取一个 30,000 行的批处理文件并将其批量加载到表中,然后使用并行处理处理记录。

我坚持的部分是创建动态表。我们想为我们收到的每个文件创建一个新的物理表。表格完成后将通过单独的进程从我们的系统中清除。

我坚持的部分是创建动态表。对于我们收到的每个批处理文件,我需要创建一个具有唯一表名的新物理文件。

我有表的基本结构,我打算使用日期/时间戳和 guid 的组合创建唯一的表名(破折号转换为下划线字符)。

我可以在存储过程中轻松做到这一点,但我想知道是否有更好的方法。

这是我考虑过的...

  1. SQL Server Management Studio 中的模板。这是一个内置于 Management Studio 中的 GUI 工具(来自 Management Studio Ctrl+Alt+T),它允许您定义不同的 sql 对象,包括表并指定参数。这似乎可以工作,但它似乎是一个 GUI 工具,而不是我可以从存储过程中调用的东西。

  2. 存储过程。我可以将所有内容放入存储过程中,并将我的文件名和架构构建为 nvarchar(max) 字符串并使用 sp_executesql 创建表。这可能是实现我的目标的方法,但我想知道是否有更好的方法。

  3. 以现有表为模板的存储过程。我可以定义一个基表,然后查询 sys.columns 和 sys.datatypes 以创建一个表示新表的字符串。这将允许我向基表添加列,而无需更新我的存储过程。我不确定这是否是更好的方法。

我想知道是否有任何 Stack Overflow 人解决了类似的要求。你有什么建议。

标签: sql-serversql-server-2016

解决方案


推荐阅读