SQL 已分区 Table - 如何将不需要分区的数据插入已分区 table?
SQL Partitioned Table - How do I Insert data that doesn't need to be partitioned into a partitioned table?
我使用以下步骤划分了一个事实 table:
- 重命名事实 Table(作为备份)
- 根据数据的加载 ID 创建了两个文件组(我正在为加载 ID 1 处理 1000 行,为加载 ID 2 处理 1000 行)
- 创建了一个分区函数,它覆盖了两个负载中值的左侧范围。
- 为这些创建了相应的方案,其中包含两个文件组和一个[主]文件组。
- 使用分区创建新事实 table 并将数据插入回。
一切正常。
问题是我有其他数据无法被范围覆盖,我需要将其插入新的 table。 (没有要求对这个数据进行分区)
我可以简单地将其他数据插入到新的 table 中吗?如果我这样做,数据会去哪里,即哪个文件组?
或者我是否需要告诉分区 function/scheme 将其他数据放在某处但不在分区文件组中?
如有任何帮助,我们将不胜感激。
非常感谢:)
如果您的 table 已分区,它将根据您的架构进入一个或多个分区。你可以只做一个插入,服务器会自动把它放在合适的分区中。
一个分区的table意味着它将使用分区函数来计算每一行的放置位置。不存在table中的数据被分区和不被分区的情况。也许你应该有第二个 table。或者您可以尝试创建一个计算列,将所有不应分区的行放入其自己的分区中,并在计算列上创建分区函数。如果要为分区函数使用计算列,请确保将其定义为持久化。
你应该在两端包裹你的分区,并为你的分区函数提供一个缓冲区来转储范围之外的数据,左右,你可以通过[=19=中的分区方案将文件分配给分区函数] 服务器.
File 1 - BUFFER PARTITION A
File 2 - BUFFER PARTITION AA
File 3 - PARTITION LEFT
File 4 - PARTITION RIGHT
File 5 - BUFFER PARTITION Z
File 6 - BUFFER PARTITION ZZ
BUFFER PARTITION AA
和 BUFFER PARTITION Z
可以处理溢出。
然后您可以做一些有用的事情,例如换出文件或插入和重新排序。
我使用以下步骤划分了一个事实 table:
- 重命名事实 Table(作为备份)
- 根据数据的加载 ID 创建了两个文件组(我正在为加载 ID 1 处理 1000 行,为加载 ID 2 处理 1000 行)
- 创建了一个分区函数,它覆盖了两个负载中值的左侧范围。
- 为这些创建了相应的方案,其中包含两个文件组和一个[主]文件组。
- 使用分区创建新事实 table 并将数据插入回。
一切正常。 问题是我有其他数据无法被范围覆盖,我需要将其插入新的 table。 (没有要求对这个数据进行分区)
我可以简单地将其他数据插入到新的 table 中吗?如果我这样做,数据会去哪里,即哪个文件组?
或者我是否需要告诉分区 function/scheme 将其他数据放在某处但不在分区文件组中?
如有任何帮助,我们将不胜感激。 非常感谢:)
如果您的 table 已分区,它将根据您的架构进入一个或多个分区。你可以只做一个插入,服务器会自动把它放在合适的分区中。
一个分区的table意味着它将使用分区函数来计算每一行的放置位置。不存在table中的数据被分区和不被分区的情况。也许你应该有第二个 table。或者您可以尝试创建一个计算列,将所有不应分区的行放入其自己的分区中,并在计算列上创建分区函数。如果要为分区函数使用计算列,请确保将其定义为持久化。
你应该在两端包裹你的分区,并为你的分区函数提供一个缓冲区来转储范围之外的数据,左右,你可以通过[=19=中的分区方案将文件分配给分区函数] 服务器.
File 1 - BUFFER PARTITION A
File 2 - BUFFER PARTITION AA
File 3 - PARTITION LEFT
File 4 - PARTITION RIGHT
File 5 - BUFFER PARTITION Z
File 6 - BUFFER PARTITION ZZ
BUFFER PARTITION AA
和 BUFFER PARTITION Z
可以处理溢出。
然后您可以做一些有用的事情,例如换出文件或插入和重新排序。