针对文本文件中的数据运行多个命令 (SQL Server 2008 R2)

Chr*_*777 5 sql-server-2008 sql-server sql-server-2008-r2

我是这个网站的新手,所以如果我问的是一个基本问题和/或一个之前被问过 100 次的问题,请原谅我。我在这里搜索时找不到答案。

我想让我的脚本从 txt 文件(每行一个值)中读取值,并为每个值执行三个不同的语句。

伪代码:

$file = getfile('c:\file.txt');

foreach($value in $file)
{
    DELETE x WHERE x = '$value';
    DELETE y WHERE y = '$value';
    DELETE z WHERE z = '$value';
}
Run Code Online (Sandbox Code Playgroud)

我知道这可能不像我的伪代码所希望的那么容易,但是我在 Google 上的所有搜索都返回了包含大量 SQL 的长篇文章,这让我无法理解。

我正在寻找我可以实现的示例,关于该主题的好文章,和/或一记耳光告诉我醒来并意识到这在 SQL 中并不容易。

mrd*_*nny 6

基于 Rob 的回答,这里有一些示例代码来完成这项工作。

CREATE TABLE #Keys (YourKey int)

BULK INSERT #Keys FROM 'C:\YourFile.txt'

DELETE FROM YourTable
WHERE Id in (select YourKey from #Keys)
Run Code Online (Sandbox Code Playgroud)

这将需要使用您的表和列名称进行清理,但它会将删除作为单个操作进行。


Rob*_*ley 4

您在这里的建议并不是特别基于集合。您可能更愿意将文件的内容导入到表中,然后基于联接运行语句。

因此 - 使用 BULK INSERT 命令将其拉入,然后不要循环。如果系统认为它是最有效的,它最终可能会为您循环,但让系统为您做出选择。

  • SQL Server 针对基于集合的操作进行了优化。与一次执行单个操作相比,当您在问题上抛出几千行时,它执行操作的速度要快得多。 (2认同)