我想编写一个 sqlcmd 脚本,从数据库中提取数据,然后操作该数据

I want to write a sqlcmd script that pulls data from a database and then manipulates that data

我试图找到 sqlcmd 脚本文件的示例,这些文件将 运行 一个 select 语句,并且 return 这些值在脚本内部并放置他们在一个变量中。然后我想遍历那些 returned 值,运行 一些关于那些 returned 值的 if 语句,然后 运行 一些 sql insert 语句。我正在使用 Sql Server Managment Studio,所以我想我可以在查询编辑器的 sqlcmd 模式下 运行 一些脚本。也许有更好的方法,但这似乎是一个很好的解决方案。

我在 Microsoft 网站上查看了可能有用的 sqlcmd 和 T-SQL 示例。我也对网络进行了一般搜索,但出现的所有示例都过于简单,没有帮助。任何帮助将不胜感激。

我是这样理解你的起始位置的:

create table #data
(
    id int,
    column1 varchar(100),
    column2 varchar(100),
    newcolumn int
)

create table #lookup
(
    id int,
    column1 varchar(100),
    column2 varchar(100)
)

insert into #data
values 
(1, 'black', 'duck', NULL),
(2, 'white', 'panda', NULL),
(3, 'yellow', 'dog', NULL),
(4, 'orange', 'cat', NULL),
(5, 'blue', 'lemur', NULL)

insert into #lookup
values
(1, 'white', 'panda'),
(2, 'orange', 'cat'),
(3, 'black', 'duck'),
(4, 'blue', 'lemur'),
(5, 'yellow', 'dog')

select * from #data
select * from #lookup

输出:

select * from #data
/------------------------------------\
| id | column1 | column2 | newcolumn |
|----|---------|---------|-----------|
| 1  | black   | duck    | NULL      |
| 2  | white   | panda   | NULL      |
| 3  | yellow  | dog     | NULL      |
| 4  | orange  | cat     | NULL      |
| 5  | blue    | lemur   | NULL      |
\------------------------------------/

select * from #lookup
/------------------------\
| id | column1 | column2 |
|----|---------|---------|
| 1  | white   | panda   |
| 2  | orange  | cat     |
| 3  | black   | duck    |
| 4  | blue    | lemur   |
| 5  | yellow  | dog     |
\------------------------/

从这个出发点,你可以实现你的要求如下:

update d set d.newcolumn = l.id
from #data d
left join #lookup l on d.column1 = l.column1 and d.column2 = l.column2

alter table #data
drop column column1, column2

这将使 table 处于所需状态,并将 varchar 值移出到查找中 table:

select * from #data
/----------------\
| id | newcolumn |
|----|-----------|
| 1  |     3     |
| 2  |     1     |
| 3  |     5     |
| 4  |     2     |
| 5  |     4     |
\----------------/

select * from #lookup
/------------------------\
| id | column1 | column2 |
|----|---------|---------|
| 1  | white   | panda   |
| 2  | orange  | cat     |
| 3  | black   | duck    |
| 4  | blue    | lemur   |
| 5  | yellow  | dog     |
\------------------------/