Вставить записи в таблицу на сервере SQL - PullRequest
1 голос
/ 12 ноября 2010

Есть ли способ в SQL SERVER (05 и 08), чтобы я мог вставлять записи из внешнего файла во временную таблицу? У меня нет прав доступа к базе данных вообще. Вот что я пытался сделать:

CREATE table #temp
(KEY_ID INT)

INSERT INTO #temp
SELECT 90883000

Ран # таблица таблицы с результатом:

KEY_ID
---------
90883000

Это работает только с одной записью. Как мне поступить, если у меня есть сто записей? Большое спасибо !!!

Ответы [ 4 ]

2 голосов
/ 12 ноября 2010

Это просто, чтобы показать, как добавить несколько строк в таблицу.

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 голосов
/ 08 ноября 2016

Так я обычно делаю, если где-то храню значения в файле.Вставка сотен записей из плоского текстового файла во временную таблицу.В моем примере только один столбец, но пока плоский файл каким-либо образом разделен, вы можете сделать столько столбцов, сколько необходимо.Необходимо убедиться, что вы поместили текстовый файл в каталог, к которому у вас есть доступ.

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
0 голосов
/ 12 ноября 2010

Для импорта файлов вы можете использовать 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 голосов
/ 12 ноября 2010

Как насчет табличной переменной. Я считаю, что #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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...