2010-05-04 38 views
18

Điều này là đáng xấu hổ, nhưng dường như tôi không tìm được cách để liệt kê tên của các bảng trong cơ sở dữ liệu DB2 của chúng tôi. Đây là những gì tôi đã cố gắng:hiển thị tất cả các bảng trong DB2 bằng cách sử dụng lệnh LIST

[email protected]:~# su - db2inst1 
[email protected]:~# . ~db2inst1/sqllib/db2profile 
[email protected]:~# LIST ACTIVE DATABASES

Chúng tôi nhận được lỗi này: số phiên bản SQL1092N "ROOT" does not have the authority to perform the requested command or operation.

DB2 sau.

[email protected]:~# db2level 
DB21085I Instance "db2inst1" uses "64" bits and DB2 code release "SQL09071" 
with level identifier "08020107". 
Informational tokens are "DB2 v9.7.0.1", "s091114", "IP23034", and Fix Pack 
"1". 
Product is installed at "/opt/db2V9.7".
+1

không nên là "db2inst1 @ VO11555" bắt đầu ở dòng hai? –

Trả lời

27

Để có được một danh sách các bảng cho cơ sở dữ liệu hiện tại trong DB2 ->

Kết nối với cơ sở dữ liệu:

db2 connect to DATABASENAME user USER using PASSWORD 

Chạy truy vấn này:

db2 LIST TABLES 

Đây là tương đương với HIỂN THỊ BẢNG trong MySQL.

Bạn có thể cần phải thực thi 'đặt lược đồ myschema' với giản đồ chính xác trước khi bạn chạy lệnh bảng danh sách. Theo mặc định khi đăng nhập, lược đồ của bạn giống với tên người dùng của bạn - thường không chứa bất kỳ bảng nào. Bạn có thể sử dụng 'các giá trị lược đồ hiện tại' để kiểm tra xem bạn đang thiết lập lược đồ nào.

+0

Cảm ơn lệnh. Tôi mới sử dụng môi trường IBM DB2 Express-C mà tôi đã xây dựng trên VM Turnkey LINUX của mình. –

+4

Bạn cũng nên thử chạy 'db2 LIST TABLES FOR ALL' trong trường hợp một số bảng nằm trong các lược đồ khác nhau. –

15
select * from syscat.tables where type = 'T' 

bạn có thể muốn hạn chế việc truy vấn để tabschema bạn

0

có bạn cài đặt một db2inst2 dùng, tôi nghĩ rằng, tôi nhớ, db2inst1 đó là rất hành chính

2

Run này dòng lệnh trên phiên vỏ ưa thích của bạn:

db2 "select tabname from syscat.tables where owner = 'DB2INST1'" 

Có lẽ bạn muốn thay đổi tên chủ sở hữu, và cần phải kiểm tra danh sách các chủ sở hữu hiện tại?

db2 "select distinct owner from syscat.tables" 
18

Kết nối với cơ sở dữ liệu:

db2 connect to <database-name> 

Danh sách tất cả các bảng:

db2 list tables for all 

Để liệt kê tất cả các bảng trong schema được chọn, sử dụng:

db2 list tables for schema <schema-name> 

Để mô tả một bảng, loại:

db2 describe table <table-schema.table-name> 

tín dụng http://onewebsql.com/blog/list-all-tables

+0

rất hữu ích, cảm ơn – Dorgham

2

Tôi đang sử dụng DB2 7.1 và sóc. Đây là truy vấn duy nhất có hiệu quả đối với tôi.

select * from SYSIBM.tables where table_schema = 'my_schema' and table_type = 'BASE TABLE'; 
Các vấn đề liên quan