讀取變量值我在SQL Server是一個簡單的查詢:在文本文件中SQL服務器:如何從文件
123
234
456
一個UserNumber
每行:
文本文件格式。
沒有這方面的經驗,但我想我需要從一個變量讀取UserNumber,該變量將不得不從文本文件中逐一取值。
感謝所有幫助
讀取變量值我在SQL Server是一個簡單的查詢:在文本文件中SQL服務器:如何從文件
123
234
456
一個UserNumber
每行:
文本文件格式。
沒有這方面的經驗,但我想我需要從一個變量讀取UserNumber,該變量將不得不從文本文件中逐一取值。
感謝所有幫助
一種方法來做到這一點:
創建臨時表:
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
你最好的選擇是寫一個客戶端程序,在C#中,使用Java,Python,或任何其他語言你是舒服訪問SQLServer的。
使用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。
'firstrow'可能需要爲'1',因爲示例文本文件沒有標題。查詢應該使用'inner join',或者至少'in(subquery)'而不是'=(subquery)' – SqlZim
@SqlZim有效點,謝謝! – morb1d
這有幫助,謝謝你們 – Arena78