Ежедневное заполнение таблицы другим SQL - PullRequest
0 голосов
/ 10 июля 2019

Я хочу заполнить таблицу другой (которая будет усечена после), однако, когда я использовал это, это только ОДИН выстрел, потому что SQL говорит, что таблица уже существует. Я просто хочу добавить строки в эту таблицу Альберты.

USE [DATAWAREHOUSE]
GO


SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER Procedure [dbo].[prcAlberta] As 

(
Select *
INTO AlbertaData_Storing
FROM dbo.AlbertaData_import
where name is not null )

truncate table AlbertaData_import
GO

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Я бы предложил сбросить таблицу и вставить в нее:

ALTER Procedure [dbo].[prcAlberta] A
as
begin
    begin try
        drop table AlbertaData_Storing;
    end try
    begin catch  -- do nothing
    end catch;

    select *
    into AlbertaData_Storing
    from dbo.AlbertaData_import
     where name is not null

    truncate table AlbertaData_import
end;
GO
0 голосов
/ 10 июля 2019

Произошла ошибка, поскольку команда вставки всех в «TableName» из другой таблицы создает новую таблицу со схемой. Так что нужно изменить запрос следующим образом.

USE [DATAWAREHOUSE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[prcAlberta] 
AS 
BEGIN
    /* If the table not exist then create a blank table */
    IF OBJECT_ID('AlbertaData_Storing') IS NULL
    BEGIN
        SELECT * INTO AlbertaData_Storing
        FROM  dbo.AlbertaData_import WHERE 1 <> 1
    END
    /* 
    Better to use required column only Like :
    INSERT INTO AlbertaData_Storing(Column1,Column2,Column3,...)
    SELECT Column1,Column2,Column3,... FROM dbo.AlbertaData_import
    WHERE Name IS NOT NULL
    */
    INSERT INTO AlbertaData_Storing
    SELECT * FROM dbo.AlbertaData_import
    WHERE Name IS NOT NULL

    TRUNCATE TABLE AlbertaData_import
END                       
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...