DB2:如何在现有列之间添加新列?
DB2: How to add new column between existing columns?
我有一个现有的 DB2 数据库和一个 table 名为
employee
有列
id,e_name,e_mobile_no,e_dob,e_address
。
如何在 e_mobile_no
之前添加新列 e_father_name
?
您应该尝试使用允许更改 table 结构的 ADMIN_MOVE_TABLE 过程。
ALTER TABLE 只允许在 table 的末尾添加列。原因是它会改变 table 的物理结构,即每一行都需要适应新格式。这将是相当昂贵的。
使用上述过程 ADMIN_MOVE_TABLE
您将复制整个 table 并在该过程中更改 table 结构。它需要大量 space 和时间。
我总是做以下事情 --
获取 table 数据的 backup/dump 和 db2look
(如果像我一样转储到 CSV 文件,我建议以新格式转储,例如将新列的 null 放在正确的位置。
删除table和索引
使用新列创建 table
使用旧值加载数据
重新创建所有索引和运行统计信息。
做几次就过时了。
在 DB2 IBM i v7r1 中你可以做到,试试你的 DB2 版本
alter table yourtable
add column e_father_name varchar(10) before e_mobile_no
我有一个现有的 DB2 数据库和一个 table 名为
employee
有列
id,e_name,e_mobile_no,e_dob,e_address
。
如何在 e_mobile_no
之前添加新列 e_father_name
?
您应该尝试使用允许更改 table 结构的 ADMIN_MOVE_TABLE 过程。
ALTER TABLE 只允许在 table 的末尾添加列。原因是它会改变 table 的物理结构,即每一行都需要适应新格式。这将是相当昂贵的。
使用上述过程 ADMIN_MOVE_TABLE
您将复制整个 table 并在该过程中更改 table 结构。它需要大量 space 和时间。
我总是做以下事情 --
获取 table 数据的 backup/dump 和 db2look (如果像我一样转储到 CSV 文件,我建议以新格式转储,例如将新列的 null 放在正确的位置。
删除table和索引
使用新列创建 table
使用旧值加载数据
重新创建所有索引和运行统计信息。
做几次就过时了。
在 DB2 IBM i v7r1 中你可以做到,试试你的 DB2 版本
alter table yourtable
add column e_father_name varchar(10) before e_mobile_no