使用 BULK 从网络文件导入 Proc 定义
Import Proc definition from network file with BULK
我正在尝试通过提供的物理文件在 MS SQL 中创建 1000 多个 Proc,作为位于 Network 上的遗留迁移的一部分。现在我计划使用带有动态 SQL 的 sp 来遍历所有这些,就像下面的片段一样,我在 BULK ROWTERMINATOR 方面遇到了问题,所以我只是用一堆 ZZZZ 来模拟它,还有其他正确的设置方法吗它到 NONE,因此所有字符串都将加载到 运行 的单行中。我的字段也使用 Nvarchar(Max)。
DROP TABLE IF EXISTS #imp;
CREATE TABLE #imp (Col varchar(max))
BULK INSERT #imp
FROM '//TFSNetwork/log/Install/sp_Test02.sql'
WITH (ROWTERMINATOR = '\nzzzzzzzzzZZZ') ---<< ?????
select top 1 @Sql = Col from #imp
EXEC (@sql);
----------------------------------------------------sp_Test02.sql
CREATE PROCEDURE [dbo].[sp_Test]
AS
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
SELECT GETDATE() AS TS
END
-----------------------------------------------------------------
Load whole file into single row/column
ROWTERMINATOR = '\n'
是默认使用的,这就是为什么你一旦完全省略它就会得到它。不要认为我们可以或将要改变这种行为,而是使用你的 Z 组合)。
同样的事情可以用另一个 BULK 来完成,在这种情况下不需要任何 ROWTERM 选项。
declare @myFile varchar(max)
select @myFile = BulkColumn
from openrowset(BULK '//Network/Path/Test02.sql', single_blob) x;
SELECT @myFile
我正在尝试通过提供的物理文件在 MS SQL 中创建 1000 多个 Proc,作为位于 Network 上的遗留迁移的一部分。现在我计划使用带有动态 SQL 的 sp 来遍历所有这些,就像下面的片段一样,我在 BULK ROWTERMINATOR 方面遇到了问题,所以我只是用一堆 ZZZZ 来模拟它,还有其他正确的设置方法吗它到 NONE,因此所有字符串都将加载到 运行 的单行中。我的字段也使用 Nvarchar(Max)。
DROP TABLE IF EXISTS #imp;
CREATE TABLE #imp (Col varchar(max))
BULK INSERT #imp
FROM '//TFSNetwork/log/Install/sp_Test02.sql'
WITH (ROWTERMINATOR = '\nzzzzzzzzzZZZ') ---<< ?????
select top 1 @Sql = Col from #imp
EXEC (@sql);
----------------------------------------------------sp_Test02.sql
CREATE PROCEDURE [dbo].[sp_Test]
AS
BEGIN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
SELECT GETDATE() AS TS
END
-----------------------------------------------------------------
Load whole file into single row/column
ROWTERMINATOR = '\n'
是默认使用的,这就是为什么你一旦完全省略它就会得到它。不要认为我们可以或将要改变这种行为,而是使用你的 Z 组合)。
同样的事情可以用另一个 BULK 来完成,在这种情况下不需要任何 ROWTERM 选项。
declare @myFile varchar(max)
select @myFile = BulkColumn
from openrowset(BULK '//Network/Path/Test02.sql', single_blob) x;
SELECT @myFile