SQL Server 使用外部存储中的列名创建过程COPY INTO语句

1tuwyuhd  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(123)

我想使用COPY INTO语句从外部存储中复制一个表及其列名。
希望实现它使用一个通用的程序,可以用于不同的表。
下面是一个草稿。输入参数可以是temp_file_path,schema,表名和目标表的列名列表。
变量temp_file_path是文件在Azure数据湖(dl)中的位置。
列列表上的变量是占位符。需要知道如何实现它。
欢迎提出其他建议。

CREATE PROC [copy_into_sql_from_dl_columns]
    @temp_file_path [VARCHAR](4096)
    , @dest_schema [VARCHAR](255)
    , @dest_table [VARCHAR](255)
    , @dest_columns [VARCHAR](255)
AS
IF @temp_file_path IS NULL OR @dest_schema IS NULL OR @dest_table IS NULL OR @dest_columns IS NULL
BEGIN  
    PRINT 'ERROR: You must specify temp_file_path, destination schema, table and column names.'
END
ELSE
BEGIN
    DECLARE @dest_temp_table AS VARCHAR(4096) 

    SET @dest_temp_table = '['+@dest_schema + '].[' + @dest_table + ']'   

    -- set target column names into a target temp variable @dest_temp_columns_list

    DECLARE @copy_into_query AS VARCHAR(8000)

    SET @copy_into_query = 'COPY INTO ' + @dest_temp_table + ' ('+ @dest_temp_columns +')'+' FROM ''' @temp_file_path + ''' WITH (FILE_TYPE = ''parquet'', AUTO_CREATE_TABLE = ''OFF'' ) ';

    EXEC (@copy_into_query)
END
GO

环境是Azure云突触
数据库是SQL专用池(Azure Synapse分析)

hfyxw5xn

hfyxw5xn1#

是否可以使用SELECT INTO?

SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

相关问题