我想使用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分析)
1条答案
按热度按时间hfyxw5xn1#
是否可以使用SELECT INTO?