【发布时间】:2020-11-18 19:16:05
【问题描述】:
我有一个脚本,它通过 zip 文件将数据输入数据库,在解压缩后首先移动它们,然后将解压缩后产生的 CSV 中的数据插入表中。现在我想更改此脚本以仅从另一个数据库和表中获取数据,但我需要能够将这些数据放在 CSV 数据所在的位置。
USE [$(DataTools)];
GO
DECLARE @LoadJob VARCHAR(64) = '208_table';
DECLARE @LoadStep VARCHAR(64) = 'spMoveUnzipLoad';
DECLARE @PreLoad VARCHAR(128) = CONCAT('etl.spChangeFileEncodingAsMUZLPreLoad ''', @LoadJob, '''');
DELETE FROM [load].LoadParameters WHERE loadJob = @LoadJob;
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'copyOrMoveFile' , 'move';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'doNotUnzipFile' , '0';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'FileMask' , 'data.csv.gz';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'firstRow' , '2';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'forLoadFolderName' , '\ForLoad';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'formatFile' , '\208_Customers.fmt';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'loadedFolderName' , '\Loaded';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'notLoadedFolderName', '\NotLoaded';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'sourceFolderName' , '$(SourceFileLocation)';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'targetDatasetName' , 'table_Staging';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'targetDatabaseName' , '$(DatabaseName)';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'truncate' , '1';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'unzipFolderName' , '\208_Customers\Unzip';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'PostLoadSql' , 'test_PostLoad';
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'PreLoadSql' , @PreLoad;
EXEC [load].setLoadParameter @LoadJob, @LoadStep, 'workingFolderName' , '\208_Customers\Working';
------------------------------------------------------------------------------------------------------------------------
-- End of Script
------------------------------------------------------------------------------------------------------------------------
如何更改此脚本以从表中获取我的数据? 它会改变还是需要重新创建?
【问题讨论】:
-
那个 scipt 没有给我们任何“肉”,它只是一堆
EXEC语句,用于我们没有定义的用户存储过程。然而,让 SQL Server 执行这样的文件系统任务似乎是 XY Problem。 -
@Larnu 我无法发布它,因为文件太大。
-
如果你不能给我们DDL,我们怎么能希望告诉你如何改变存储过程的定义呢?但是,就像我说的,这似乎是一个 XY 问题。该过程看起来像是在尝试成为一个适合所有过程的尺寸,这不是 SQL 的工作方式。
标签: sql sql-server ssms sql-server-2014