2010-11-12 59 views
1

SQL SERVER(05 & 08)中有沒有可以將記錄從外部文件插入臨時表的方法?我根本沒有數據庫的特權。下面是我試圖做的:在SQL服務器中插入記錄到表中

CREATE table #temp 
(KEY_ID INT) 

INSERT INTO #temp 
SELECT 90883000 

冉#TEMP表結果:

KEY_ID 
--------- 
90883000 

它那種只用一個記錄工作。如果我有100條記錄,該怎麼辦?非常感謝!!!

回答

2

這只是爲了顯示如何在一個表中添加多行。

CREATE table #temp(
    KEY_ID integer 
) 

Declare @i as int 

set @i = 1 

WHILE (@i <= 10000) 
BEGIN 

insert into #temp values(@i) 

set @i += 1 

End 
0

如何表變量。我相信#temp需要tempdb數據庫的權限。我相信一個表變量就像任何其他基於會話的變量一樣使用。

要聲明一個表變量:

DECLARE @ProductTotals TABLE 
(
    ProductID int, 
    Revenue money 
) 

插入表變量:

INSERT INTO @ProductTotals (ProductID, Revenue) 
    SELECT ProductID, SUM(UnitPrice * Quantity) 
    FROM [Order Details] 
    GROUP BY ProductID 
+0

謝謝大家。我試圖導入temp的記錄來自數據庫之外。 – joe 2010-11-12 13:35:07

0

要導入的文件,你可以使用BULK IMPORT。使用它可以將數據存入臨時表,然後您可以運行基於集的操作。


插入大量行的更有效的方法。

INSERT INTO #temp 
(KeyID) 
SELECT TOP 1000 -- PUT YOUR QUANTITY HERE 
     IDENTITY(INT,1,1) AS N 
FROM Master.dbo.SysColumns sc1, 
    Master.dbo.SysColumns sc2 

如果你打算使用這個有很多,只是問他們創造你TALLY TABLE

+0

謝謝布拉德。我試圖插入的記錄來自數據庫之外。所以,不知道這是否會起作用。 – joe 2010-11-12 13:36:52

+0

你想用這個文件做什麼?您的訪問權限有多少? – Brad 2010-11-12 13:37:55

+0

我想匹配記錄,我想要插入到與現有表中的記錄臨時tb。我可以像這樣從table1中選擇key_id,其中key_id在(90883000,...,...,...,...)中。這種方法適用於少數,但在hundreads時效率不高)。這就是爲什麼我試圖創建一個臨時加入table1的原因。 – joe 2010-11-12 13:41:19

0

這就是我通常這樣做,如果我有一個文件中的值的地方。從平面文本文件中插入數百條記錄到臨時表中。我的例子只有一列,但只要平面文件以某種方式分隔,就可以根據需要做很多列。需要確保將文本文件放在您有權訪問的目錄中。

IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL DROP TABLE #TempTable 

CREATE TABLE #TempTable(Col1 varchar(10)) --Specify temp-table name & columns 

    BULK INSERT #TempTable 
     FROM 'C:\FileName.txt'   --Specify file path/name 
     WITH (
     FIELDTERMINATOR = '\t', 
     ROWTERMINATOR = '\n' 
     ); 
    GO