首页 > 解决方案 > 使用批处理文件创建 SQL 脚本并将 CSV 文件中的多个变量添加到该 SQL 脚本

问题描述

我是批处理脚本的新手,我正在努力写一些可以:

1)读取 csv 第一列并将这些值设置为变量。

2) 编写一个简短的 sql 语句脚本,将所有这些变量添加到 WHERE 子句中。

就这样...

我已经做了什么:

CSV 文件(要添加的变量) CSV 文件

批号 批号

结果脚本: 脚本

我需要什么: 批处理的 MySQL 脚本结果

有什么想法可以分享吗?

标签: mysqlbatch-filevariables

解决方案


@echo off
setlocal

set "_InputFile=%userprofile%\Desktop\FC3.txt"

set "seq="
for /f "tokens=1 delims=," %%A in (%_InputFile%) do (
    call set "seq=%%seq%%%%~A,"
)

set "seq=(%seq:~,-1%)"

> FinalStage.sql echo SELECT * FROM Totalfm3 WHERE Totalfm3.BRN IN %seq%

exit /b

%userprofile%预计将C:Users\Martin与您的帐户。

%seq%存储用逗号分隔的数字。

call set会进行额外的解析,因此无需延迟扩展即可%%seq%%评估变量名称的值。seq

set "seq=(%seq:~,-1%)"修剪最后一个逗号并在逗号分隔值周围添加括号。

最后,将 SQL 语句写入文件。

循环中设置的标记for与 csv 文件示例不匹配。我将令牌设置1为匹配 csv 文件示例。您可能需要调整令牌以满足您的需要。


进行多行声明。

改变:

> FinalStage.sql echo SELECT * FROM Totalfm3 WHERE Totalfm3.BRN IN %seq%

(
    echo SELECT * FROM Totalfm3
    echo WHERE Totalfm3.BRN IN %seq%;
) > FinalStage.sql

在语句末尾添加;,因为这是 MySQL 结束语句的方式。


推荐阅读