mysql - 使用批处理文件创建 SQL 脚本并将 CSV 文件中的多个变量添加到该 SQL 脚本
问题描述
我是批处理脚本的新手,我正在努力写一些可以:
1)读取 csv 第一列并将这些值设置为变量。
2) 编写一个简短的 sql 语句脚本,将所有这些变量添加到 WHERE 子句中。
就这样...
我已经做了什么:
CSV 文件(要添加的变量) CSV 文件
批号 批号
结果脚本: 脚本
我需要什么: 批处理的 MySQL 脚本结果
有什么想法可以分享吗?
解决方案
@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 结束语句的方式。
推荐阅读
- python - 如何通过写入“/dev/input/EventX”在一个文件流中发送和执行多个事件
- delphi - 快速获取大文件总行数的方法
- php - 如何在 laravel 中修复“stdClass 类的对象无法转换为字符串”?
- python - 如何绘制二维向量
- swiftui - SwiftUI WidgetKit 文本和图像对齐
- sockets - 带有 TLS 的 log4j2 SocketAppender 不会获取更新的证书
- python - 将数学表达式解析为“3 + 2 * temp + 湿度”,其中替换有效载荷中的 alpha 值
- c++ - 如何使用对象数组实现排序算法?
- appium - 使用 Appium 以并行模式在不同设备上运行测试
- amazon-iam - 在构建阶段访问 CodeCommit 存储库的权限问题