我有兩個mysql數據庫。一個是新和另一個是舊。MySql-如何從兩個不同的數據庫獲取不同表的列表
我需要兩個數據庫之間的不同表的列表。這是我的舊數據庫有155個表的列表,我的新數據庫有165個表的列表。
如何獲得TEN不同表格的名稱?
有沒有什麼工具可以做到這一點,或者我們可以通過查詢做到?
任何幫助會感激...
在此先感謝..
我有兩個mysql數據庫。一個是新和另一個是舊。MySql-如何從兩個不同的數據庫獲取不同表的列表
我需要兩個數據庫之間的不同表的列表。這是我的舊數據庫有155個表的列表,我的新數據庫有165個表的列表。
如何獲得TEN不同表格的名稱?
有沒有什麼工具可以做到這一點,或者我們可以通過查詢做到?
任何幫助會感激...
在此先感謝..
你試過:
SHOW TABLES IN database;
或使用information schema
:
select table_schema,
table_name from information_schema.tables
where table_name = ???;
編輯按OP的評論:
The INFORMATION_SCHEMA database is made up of temporary tables using the MEMORY storage engine.。 INFORMATION_SCHEMA數據庫中的所有表都作爲MEMORY存儲引擎表直接存儲在內存中。它們完全在MySQL內部,所以.frm機制在mysqld中處理。在我的回答中,我首先展示了INFORMATION_SCHEMA.TABLES的表格佈局。它是一個內存中的臨時表。它使用存儲引擎協議進行操縱。因此,當mysqld關閉時,所有的information_schema表都被丟棄。當啓動mysqld時,所有的information_schema表被創建爲TEMPORARY表,並用mysql的實例中的每個表的元數據重新填充。
例如,如果您運行以下兩條命令,則會看到您的mysql 元數據中的所有數據庫。
show databases;
use information_schema;
show tables;
這裏你指定一個table_schema
拿到表名。
SELECT table_name from
information_schema.tables WHERE table_schema = 'mydb';
隨着加入:假設一個數據庫名稱爲db1
,其他db2
SELECT table_name from
db1.tables x
inner join
db2.tables
on x.table_name = y.table_name
;
我想你應該在數據庫information_schema
查詢。它是一個包含所有數據庫的所有元數據的表格。 查詢類似:
SELECT * FROM `TABLES` T1
LEFT JOIN `TABLES` T2
ON T1.`TABLE_NAME` = T2.`TABLE_NAME`
WHERE T1.`TABLE_SCHEMA`='xxx'
AND T2.`TABLE_SCHEMA`='yyy'
AND T1.TABLE_CATALOG IS NULL
您可以通過查詢包含在如表名,列名,主鍵列,主鍵的名字,索引等服務器的其他數據庫的信息INFORMATION_SCHEMA
(數據庫做到這一點。)像這樣:
-- this gives the table names that are in the new table but not in the old table
select newTable.TABLE_NAME
from TABLES newTable
where newTable.TABLE_SCHEMA='NEW' and newTable.TABLE_NAME not in
(
select oldTable.TABLE_NAME
from TABLES oldTable
where oldTable.TABLE_SCHEMA='OLD'
)
SHOW TABLES IN database;將只顯示錶格列表。你能否清楚地解釋信息模式的概念...... – Fero
@Fero後者是最適合你使用'信息模式'首先檢索幾張表,然後通過使用這些名稱加入到其他架構。 – bonCodigo