2013-07-30 65 views
4

我試圖從一個表中將列名作爲數據插入到另一個SQL Server中。這是我正在使用的查詢:將列名插入表中

insert into TableB (Name) 
select COLUMN_NAME 
from information_schema.COLUMNS 
where TABLE_NAME = 'TableA' 

這會返回零行。我嘗試過不指定TABLE_NAME,並嘗試指定TABLE_SCHEMA。這些都給出了結果,但不是我要找的。

+3

你看到的值你所期望的,當你只是運行:'SELECT COLUMN_NAME,TABLE_NAME FROM INFORMATION_SCHEMA .COLUMNS'? –

+0

@GoatCO我期待的價值觀以及許多我不想插入的東西。 –

+0

當你從這些結果中添加'WHERE'標準和表名時,你什麼都得不到? –

回答

2

我看不到您提供的SQL代碼有任何問題。

更多故障排除:

1)如果查詢:

select COLUMN_NAME 
from information_schema.COLUMNS 
where TABLE_NAME = 'TableA' 

你得到任何結果?

2)如果你試試這個INSERT,它工作嗎?

INSERT INTO Table_1 (Name) 
Select 'Name1' 

3)如果選擇這些列,你在列表中看到的TABLE_NAME?

Select DISTINCT(TABLE_NAME) FROM INFORMATION_SCHEMA.columns 

您的SQL代碼的工作很適合我用的AdventureWorks-DB從微軟(Table_1是一個空表列名):

INSERT INTO dbo.Table_1 (Name) 
Select COLUMN_NAME FROM INFORMATION_SCHEMA.columns 
where TABLE_NAME = 'ProductInventory' 

select * from table_1 

輸出:

ProductID 
LocationID 
Shelf 
Bin 
Quantity 
rowguid 
ModifiedDate 
+0

我在嘗試插入前運行select部分,並返回0行。插入作品。 TABLE_NAME不在列表中,似乎問題在於我搜索的表位於服務器上的其他數據庫中。謝謝。 –

+0

@WilliamCox我總是很樂意幫忙。 ;) –

0

您的查詢應該儘可能地發揮作用可以說,這麼說,我總是使用這些查詢SYS.COLUMNS和SYS.TABLES,嘗試:

SELECT c.name ColumnName 
FROM sys.columns c 
JOIN sys.tables t 
    ON c.object_id = t.object_id 
WHERE t.name = 'TableA'