我正在尝试使用T-SQL / SQL从文件(.txt)加载数据,我能够导入该数据,但其中一个要求是我需要从中提取文件的位置DB中的表。以下是我的脚本。
ALTER PROCEDURE [dbo].[sp_BULK_IMPORT]
@i_CUSTOMERID VARCHAR(10)
, @CFG_KEY VARCHAR(25)
AS
DECLARE
@DATE DATETIME
, @WHO VARCHAR(20)
, @CFG_VALUE VARCHAR(500)
SET @DATE = GETDATE()
SET @WHO = SYSTEM_USER
--Check for NULL CustomerID
IF ISNULL(@i_CUSTOMERID, '') = ''
BEGIN
SET @i_CUSTOMERID = '0'
END
--Get File Directory for I9
SELECT @CFG_VALUE = sys_value FROM SYS_CONFIG(NOLOCK) WHERE sys_code = @CFG_KEY AND sys_customerid = @i_CUSTOMERID
/*GET DATE FROM FILE*/
BULK INSERT IMPORTED_DATA
FROM 'C:\File_Import\Import\I900000001.txt'
WITH
(
ROWTERMINATOR = ';\n',
CHECK_CONSTRAINTS
)
我想用变量@CFG_VALUE替换“C:\ File_Import \ Import”,这是基于系统中Configuration的值。当我这样做时,我收到一个错误:
EXPECTING ID, INTEGER, QUOTED_ID, STRING, or TEXT_LEX
非常感谢任何帮助。
答案 0 :(得分:0)
希望你想要这样
DECLARE @CreateSql varchar(max);
--or DECLARE @CreateSql varchar(x);
SET @CreateSql = 'BULK INSERT IMPORTED_DATA
FROM '+@CFG_VALUE+'
WITH
(
ROWTERMINATOR = ';',
CHECK_CONSTRAINTS
)';
EXEC (@CreateSql);