Bagaimana cara mendapatkan daftar tabel yang memiliki kolom tertentu dari server Oracle?

Saya menggunakan SQL Server 2008 R2,

Saya memiliki akses ke server Oracle dari server tertaut dengan akses hanya baca.

Sekarang saya ingin mendapatkan daftar tabel dari server Oracle yang memiliki kolom tertentu.

Misalnya saya ingin semua tabel yang memiliki kolom "Alamat bisnis".

Mohon bantuannya jika anda mempunyai ide/tips.!!

Terima kasih.


person user2040021    schedule 06.06.2013    source sumber


Jawaban (2)


Jika Anda memiliki hak istimewa dan berasumsi bahwa nama kolom sebenarnya adalah BUSINESS_ADDRESS, bukan nama kolom peka huruf besar-kecil yang menyertakan spasi.

SELECT owner, table_name, column_name
  FROM dba_tab_columns
 WHERE column_name = 'BUSINESS_ADDRESS'

Jika tidak, Anda dapat menggunakan ALL_TAB_COLUMNS jika Anda hanya peduli dengan tabel yang dapat ditanyakan oleh pengguna Oracle yang Anda sambungkan atau USER_TAB_COLUMNS jika Anda hanya peduli dengan tabel yang dimiliki oleh pengguna Oracle yang Anda sambungkan.

person Justin Cave    schedule 06.06.2013
comment
Tapi masalahnya adalah,..Saya menggunakan SQL SERVER 2008r2 dan di dalamnya saya hanya memiliki akses read-only ke server Oracle yang ada di folder Linked server. apakah saya masih dapat menggunakan solusi Anda? - person user2040021; 07.06.2013
comment
@ user2040021 - Namun Anda mengatakan bahwa Anda memiliki server tertaut. Jadi saya berasumsi Anda tahu cara menjalankan kueri terhadap Oracle melalui server tertaut tersebut. Apakah itu asumsi yang buruk? - person Justin Cave; 07.06.2013
comment
Aku minta maaf, aku membuat kekacauan. Sebenarnya saya menggunakan SQL SERVER 2008r2, di mana saya memiliki akses Oracle Server yang ada di folder LINKED SERVER dari SQL SERVER 2008r2. Sekarang masalahnya adalah saya perlu mengambil semua tabel dari server Oracle yang memiliki kolom khusus bernama Business_Address. - person user2040021; 07.06.2013
comment
@ user2040021 - akses hanya baca dapat berarti banyak hal berbeda. Jika Anda telah diberi hak istimewa untuk membaca kamus data, maka Anda dapat membaca dari tabel dba_tab_columns. Jika tidak, maka Anda hanya dapat mencari tabel yang aksesnya Anda miliki (atau yang Anda miliki) yang juga memiliki kolom yang Anda minati. Anda tidak akan dapat memeriksa setiap tabel di database untuk kolom tersebut jika Anda belum diberi hak istimewa untuk melakukan itu. - person Justin Cave; 07.06.2013
comment
KETIKA SAYA MENCOBA MENJALANKANNYA SEPERTI BERIKUT SELECT TABLE_NAME, COLUMN_NAME FROM [10.123.12.12]..ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE 'L%'; ITU MEMBERI SAYA KESALAHAN BERIKUT Pesan 208, Level 16, Status 1, Baris 1 Nama objek tidak valid '[10.123.12.12]..ALL_TAB_COLUMNS' - person user2040021; 07.06.2013

  • Ada kemungkinan Anda tidak memiliki akses ke beberapa tampilan.
  • Mungkin saja Anda tidak memiliki akses ke tampilan apa pun.

Namun jika Anda memiliki akses, Anda dapat menjalankan pernyataan SQL berikut:

/* schema you are connected to */
SELECT  table_name
FROM    user_tab_columns
WHERE   LOWER(column_name) LIKE '%business%address%'
;

/* all schemas you have access to*/
SELECT  owner, table_name
FROM    all_tab_columns
WHERE   LOWER(column_name) LIKE '%business%address%'
;
  • Anda dapat membuat tabel sementara dan memasukkan hasilnya ke dalamnya.
person the_slk    schedule 07.06.2013
comment
KETIKA SAYA MENCOBA MENJALANKANNYA SEPERTI BERIKUT SELECT TABLE_NAME, COLUMN_NAME FROM [10.123.12.12]..ALL_TAB_COLUMNS WHERE COLUMN_NAME LIKE 'L%'; ITU MEMBERI SAYA KESALAHAN BERIKUT Pesan 208, Level 16, Status 1, Baris 1 Nama objek tidak valid '[10.123.12.12]..ALL_TAB_COLUMNS'. - person user2040021; 07.06.2013
comment
PILIH * DARI linked_server_name..Oracle_schema.Oracle_table; - person the_slk; 07.06.2013