2016-05-16 3 views
-1

Ich bin ein Neuling für Datenbankprogrammierung und hat eine Frage.Tabelle erstellen und Daten migrieren

In der C++ - Anwendung, die arbeitet, gibt es eine Oracle DB. Eine der Tabellen heißt USR_INFO. Es hat mehrere Spalten wie,

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 

Jetzt ich eine neue Tabelle erstellen möchten USR_LOG_INFO genannt, und 3 Spalten hinzufügen, um es genannt,

1. U_INFO_ID 
2. U_INFO_LAST_LOGIN_DATE 
3. U_INFO_LAST_LOGIN_TIME 

Und dann die Daten für die gleichen Spalten von USR_INFO migrieren ähnliche Spalten in USR_LOG_INFO.

Grundsätzlich sind hier 2 Schritte beteiligt.

1.Erstellen neue Tabelle namens USR_LOG_INFO

2.Migrate Spaltendaten von USR_INFO USR_LOG_INFO

Kann jemand mir geben SQL-Befehle über 2 Schritte zu tun?

Antwort

0

einfache Antwort .. nicht ..

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); 

getan.

Wenn Sie es wirklich auf Ihre Weise tun möchten.

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; 

und schließlich warum Sie separate Datum/Zeit-Spalten haben Sie besser eine TIMESTAMP-Spalte nur mit und Extrahieren das Datum und/oder Zeit sein könnte, wenn Sie es brauchen.

+1

Oracle DATEs enthalten die Uhrzeit. Sie brauchen nur TIMESTAMP, wenn Sie Bruchteile von Sekunden brauchen, wie zum Beispiel Aktienhandel oder Dinge, die SEHR Zeit empfindlich sind. – thatjeffsmith

+1

true .. Sie brauchen nur noch 1 Spalte, nicht 2. Aber ich fühle, dass wenn Sie Auditing-Ereignisse machen, dann ein Zeitstempel perfekt dafür ist. Ich benutze jetzt 'Zeitstempel mit Zeitzone'-Spalten, wann immer es Sinn macht, das ist nützlich, wenn es irgendeine Zeitkomponente hat .. und hauptsächlich Datumsspalte ohne Zeit verwendet, dh' date = trunc (date) ' – ShoeLace

0

Ein weiterer 2-Schritt-Ansatz:

create table USR_LOG_INFO 
as 
    select * 
    from USR_INFO; 

dann Benutzer Shoelace Rat folgt auf dem Hinzufügen der zusätzliche Spalten mit dem 2. alter table Befehl.

Ich vermied den Schritt drop table, weil es beim Lesen der Frage des OP nicht klar war, ob das OP wollte, dass die Originaltabelle blieb oder entfernt wurde.