2017-03-18 71 views
0

讀取變量值我在SQL Server是一個簡單的查詢:在文本文件中SQL服務器:如何從文件

123 
234 
456 

一個UserNumber每行:

​​

文本文件格式。

沒有這方面的經驗,但我想我需要從一個變量讀取UserNumber,該變量將不得不從文本文件中逐一取值。

感謝所有幫助

回答

0

一種方法來做到這一點:

創建臨時表:

DROP TABLE #UserNumberTemp 
CREATE TABLE #UserNumberTemp( 
    [UserNumber] int 
) 

Builk導入數據到臨時表(假設你的數據文件的.csv)

BEGIN TRANSACTION 
BULK INSERT #InterpreterTrimNumbers FROM 'C:\MyData\UserNumber.csv' WITH (
     FIRSTROW = 2, 
     FIELDTERMINATOR = ',', 
     ROWTERMINATOR = '\n', 
     ERRORFILE = 'C:\MyData\UserNumberErrors.csv', 
     TABLOCK 
    ) 
--Then based on temporary table do update: 

Update Account set Auth = 1 where UserNumber = (select UserNumber from #UserNumberTemp where #UserNumberTemp.UserNumber = Account.UserNumber) 
Commit Transaction 
+0

'firstrow'可能需要爲'1',因爲示例文本文件沒有標題。查詢應該使用'inner join',或者至少'in(subquery)'而不是'=(subquery)' – SqlZim

+0

@SqlZim有效點,謝謝! – morb1d

+0

這有幫助,謝謝你們 – Arena78

0

你最好的選擇是寫一個客戶端程序,在C#中,使用Java,Python,或任何其他語言你是舒服訪問SQLServer的。

0

使用SQLCMD模式variable substitution

Update Account 
set Auth = 1 
where UserNumber = $(userNumber) 

然後使用CMD命令for遍歷文件和傳遞價值sqlcmd:由一個像這樣的

c:\>for /F %i in (myfile) do slqcmd \ 
    "update ... where UserNumber = $(userNumber)" \ 
    -v userNumber=%i 

當然,發表聲明一個不是很有效,有更好的解決方案,例如。使用SSIS