2013-07-20 55 views
0

我想從一個文件(.txt)使用T-SQL/SQL加載數據,我能夠導入該數據,但其中一個要求是我需要從一個表中拉文件的位置在數據庫中。以下是我的腳本。如何使用預定義目錄從文件導入數據?

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 
) 

我要替換「C:\ File_Import \輸入」與變量@CFG_VALUE這是基於系統的配置價值。當我這樣做時,我得到一個錯誤:

EXPECTING ID, INTEGER, QUOTED_ID, STRING, or TEXT_LEX 

任何幫助將不勝感激。

+0

http://stackoverflow.com/questions/7306616/bulk-insert-with-filename-parameter –

回答

0

希望你想這樣

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

SET @CreateSql = 'BULK INSERT IMPORTED_DATA 
FROM '[email protected]_VALUE+' 
WITH 
(
    ROWTERMINATOR = ';', 
    CHECK_CONSTRAINTS 
)'; 

EXEC (@CreateSql); 
+0

謝謝您的幫助 – jorame

相關問題