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