【问题标题】:How to import data from a File using with pre-defined directory?如何使用预定义目录从文件中导入数据?
【发布时间】:2013-07-19 11:05:57
【问题描述】:

我正在尝试使用 T-SQL/SQL 从文件 (.txt) 加载数据,我能够导入该数据,但其中一个要求是我需要从数据库中的表。下面是我的脚本。

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”,这是基于系统配置的值。当我这样做时,我得到一个错误:

EXPECTING ID, INTEGER, QUOTED_ID, STRING, or TEXT_LEX

任何帮助将不胜感激。

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

希望你喜欢这样

DECLARE @CreateSql varchar(max);
--or DECLARE @CreateSql varchar(x);

SET @CreateSql = 'BULK INSERT IMPORTED_DATA
FROM '+@CFG_VALUE+'  
WITH
(
    ROWTERMINATOR = ';',
    CHECK_CONSTRAINTS
)';

EXEC (@CreateSql);

【讨论】:

    猜你喜欢
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多