SQL Server:如何从文件中读取变量值

时间:2017-03-18 12:54:30

标签: sql-server variables

我在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,并且该变量必须逐个从文本文件中获取值。

感谢您的帮助

3 个答案:

答案 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