วิธีรับรายการตารางที่มีคอลัมน์เฉพาะจากเซิร์ฟเวอร์ Oracle

ฉันใช้ SQL Server 2008 R2

ฉันสามารถเข้าถึงเซิร์ฟเวอร์ Oracle จากเซิร์ฟเวอร์ที่เชื่อมโยงด้วยการเข้าถึงแบบอ่านอย่างเดียว

ตอนนี้ฉันต้องการรับรายการตารางจากเซิร์ฟเวอร์ Oracle ซึ่งมีคอลัมน์เฉพาะ

ตัวอย่างเช่น ฉันต้องการตารางทั้งหมดที่มีคอลัมน์ "ที่อยู่ธุรกิจ"

โปรดช่วยหากคุณมีความคิด / เคล็ดลับ !!

ขอบคุณ.


person user2040021    schedule 06.06.2013    source แหล่งที่มา


คำตอบ (2)


หากคุณมีสิทธิ์และสมมติว่าชื่อจริงของคอลัมน์คือ BUSINESS_ADDRESS ไม่ใช่ชื่อคอลัมน์ที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ที่มีการเว้นวรรค

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

ถ้าไม่เช่นนั้น คุณสามารถใช้ ALL_TAB_COLUMNS หากคุณสนใจเฉพาะตารางที่ผู้ใช้ Oracle ที่คุณกำลังเชื่อมต่อสามารถสืบค้นได้ หรือ USER_TAB_COLUMNS หากคุณสนใจเฉพาะตารางที่ผู้ใช้ Oracle ที่คุณเชื่อมต่อในฐานะเป็นเจ้าของเท่านั้น

person Justin Cave    schedule 06.06.2013
comment
แต่ปัญหาคือ .. ฉันใช้ SQL SERVER 2008r2 และโดยที่ฉันมีสิทธิ์เข้าถึงเซิร์ฟเวอร์ oracle แบบอ่านอย่างเดียวซึ่งมีอยู่ในโฟลเดอร์เซิร์ฟเวอร์ที่เชื่อมโยงเท่านั้น ฉันยังสามารถใช้โซลูชันของคุณได้หรือไม่? - person user2040021; 07.06.2013
comment
@ user2040021 - แต่คุณบอกว่าคุณมีเซิร์ฟเวอร์ที่เชื่อมโยง ฉันสมมติว่าคุณรู้วิธีเรียกใช้คำสั่งกับ Oracle ผ่านเซิร์ฟเวอร์ที่เชื่อมโยงนั้น นั่นเป็นสมมติฐานที่ไม่ดีเหรอ? - person Justin Cave; 07.06.2013
comment
ฉันขอโทษ ฉันทำเรื่องวุ่นวาย จริงๆแล้วฉันใช้ SQL SERVER 2008r2 โดยที่ฉันสามารถเข้าถึง Oracle Server ซึ่งมีอยู่ในโฟลเดอร์ LINKED SERVER ของ SQL SERVER 2008r2 ตอนนี้ปัญหาคือฉันต้องดึงตารางทั้งหมดจากเซิร์ฟเวอร์ oracle ที่มีคอลัมน์เฉพาะที่เรียกว่า Business_Address - person user2040021; 07.06.2013
comment
@ user2040021 - การเข้าถึงแบบอ่านอย่างเดียวอาจหมายถึงสิ่งที่แตกต่างกันมากมาย หากคุณได้รับสิทธิ์ในการอ่านพจนานุกรมข้อมูล คุณสามารถอ่านได้จากตาราง dba_tab_columns ถ้าไม่เช่นนั้น คุณสามารถค้นหาได้เฉพาะตารางที่คุณมีสิทธิ์เข้าถึง (หรือที่คุณเป็นเจ้าของ) ซึ่งมีคอลัมน์ที่คุณสนใจด้วย คุณจะไม่สามารถตรวจสอบทุกตารางในฐานข้อมูลสำหรับคอลัมน์นั้นได้ หาก คุณไม่ได้รับสิทธิพิเศษให้ทำเช่นนั้น - person Justin Cave; 07.06.2013
comment
เมื่อฉันพยายามเรียกใช้เหมือนดังต่อไปนี้ เลือก TABLE_NAME, COLUMN_NAME จาก [10.123.12.12]..ALL_TAB_COLUMNS โดยที่ COLUMN_NAME เช่น 'L%'; มันให้ฉันติดตามข้อผิดพลาด ข่าวสารเกี่ยวกับ 208 ระดับ 16 สถานะ 1 บรรทัด 1 ชื่อวัตถุไม่ถูกต้อง '[10.123.12.12]..ALL_TAB_COLUMNS' - person user2040021; 07.06.2013

  • อาจเป็นไปได้ว่าคุณไม่สามารถเข้าถึงบางมุมมองได้
  • อาจเป็นไปได้ว่าคุณไม่สามารถเข้าถึงมุมมองใดๆ

แต่ถ้าคุณมีสิทธิ์เข้าถึง คุณสามารถเรียกใช้คำสั่ง SQL ต่อไปนี้:

/* 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%'
;
  • คุณสามารถสร้างตารางชั่วคราวและจับผลลัพธ์ลงไปได้
person the_slk    schedule 07.06.2013
comment
เมื่อฉันพยายามที่จะเรียกใช้เหมือนดังต่อไปนี้ เลือก TABLE_NAME, COLUMN_NAME จาก [10.123.12.12]..ALL_TAB_COLUMNS โดยที่ COLUMN_NAME เช่น 'L%'; มันให้ฉันติดตามข้อผิดพลาด ข่าวสารเกี่ยวกับ 208 ระดับ 16 สถานะ 1 บรรทัด 1 ชื่อวัตถุไม่ถูกต้อง '[10.123.12.12]..ALL_TAB_COLUMNS' - person user2040021; 07.06.2013
comment
SELECT * จาก linked_server_name..oracle_schema.oracle_table; - person the_slk; 07.06.2013