sql >> Databasteknik >  >> RDS >> Oracle

Hur man kopierar data från en databas/tabell till en annan databas/tabell

I en typisk Oracle-miljö har du TNS-namn inställda. Det är en tjänst för att slå upp anslutningsparametrarna för Oracle-instanser med ett SID eller tjänstnamn. I sin enklaste form är TNS-namn en fil som heter tnsnames.ora lokaliserad av miljövariabeln TNS_ADMIN (vilket pekar på katalogen där filen finns).

Med tanke på SID:erna PROD och SANDBOX , kan du sedan kopiera tabellerna från kommandoradsverktyget SQLPLUS:

COPY FROM username1/[email protected] to username2/[email protected]
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

Observera att detta COPY-kommando endast stöder en begränsad uppsättning Oracle-datatyper:char, date, long, varchar2, number.

Om du inte har konfigurerat TNS-namn måste du känna till värdnamnet eller IP-adressen, portnumret och tjänstens namn. Syntaxen blir då:

COPY FROM username1/[email protected]//192.168.3.17:1521/PROD_SERVICE to username2/[email protected]//192.168.4.17:1521/SANDBOX_SERVICE
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);

För att bestämma SID och/eller tjänstnamnet bör du titta in i filen TNSNAMES.ORA på själva databasservern. Om du kan logga in på databasen kan du använda följande frågor för att bestämma SID och tjänstens namn (men fråga mig inte vilket som är vilket):

select name from v$database;

select * from global_name;

select instance_number, instance_name, host_name from v$instance;


  1. Ogiltig användning sidoverkande operator Infoga i en funktion

  2. Oracle LIMIT n,m ekvivalent

  3. mysqli-anslutningen fungerar inte inuti funktionen?

  4. Hur ger jag varje registrerad användare sin egen url med PHP?