我在SQL Server中得到了一个简单的查询,如:
Update Account
set Auth = 1
where UserNumber = (and here i need the value to be read from a list on a text file)
文本文件格式:
123
234
456
文本文件中每行一UserNumber
个。
没有经验,但我认为我需要从变量中读取UserNumber,并且该变量必须逐个从文本文件中获取值。
感谢您的帮助
答案 0 :(得分:0)
您最好的选择是编写一个客户端程序,以C#,Java,Python或您熟悉的任何其他语言访问SQLServer。
答案 1 :(得分:0)
一种方法:
创建临时表:
DROP TABLE #UserNumberTemp
CREATE TABLE #UserNumberTemp(
[UserNumber] int
)
将数据导入临时表(假设您的数据文件是.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
答案 2 :(得分: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。