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



我正在尝试查找将运行 select 语句的 sqlcmd 脚本文件的示例,并将这些值返回脚本内部并将它们放在变量中。 然后,我想遍历这些返回值,对这些返回值运行一些 if 语句,然后运行一些 sql 插入语句。 我使用的是 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

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

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     |
------------------------/

最新更新