创建 Table 并迁移数据

Create Table and Migrate Data

我是数据库编程的新手,有一个问题。

在运行的 C++ 应用程序中,有一个 Oracle 数据库。 table 之一叫做 USR_INFO。它有多个列,例如,

 1. U_INFO_ID
 2. U_INFO_FIRST_NAME
 3. U_INFO_LAST_NAME
 4. U_INFO_ADDRESS
 5. U_INFO_AGE
 6. U_INFO_LAST_LOGIN_DATE
 7. U_INFO_LAST_LOGIN_TIME

现在我想创建一个名为 USR_LOG_INFO 的新 table,并向其添加 3 列,名为

 1. U_INFO_ID
 2. U_INFO_LAST_LOGIN_DATE
 3. U_INFO_LAST_LOGIN_TIME

然后将相同列的数据从 USR_INFO 迁移到 USR_LOG_INFO 中的相似列。

这里基本上涉及2个步骤。

1.Create 新 table 称为 USR_LOG_INFO

2.Migrate 列数据从 USR_INFO 到 USR_LOG_INFO

有人可以给我 SQL 命令来执行以上 2 个步骤吗?

简单回答..不要..

alter table USR_INFO rename USR_LOG_INFO;
alter table USR_LOG_INFO add (U_INFO_ID                NUMBER,
                              U_INFO_LAST_LOGIN_DATE    DATE,
                              U_INFO_LAST_LOGIN_TIME    DATE);

完成。

如果你真的想按照自己的方式去做。

create table USR_LOG_INFO as
   select * 
        , to_number(NULL) U_INFO_ID 
        , to_date(null)  U_INFO_LAST_LOGIN_DATE    
        , to_date(null) U_INFO_LAST_LOGIN_TIME
   from USR_INFO;

drop table USR_INFO;

最后 为什么你有单独的 date/time 列 您最好只使用 TIMESTAMP 列并在需要时提取日期 and/or 时间。

另一种两步法:

create table USR_LOG_INFO
as
  select * 
  from USR_INFO;

然后按照用户 Shoelace 的建议使用第二个 alter table 命令添加额外的列。

我避免了 drop table 这一步,因为通过阅读 OP 的问题,不清楚 OP 是否希望保留或删除原始 table。