【发布时间】:2013-12-16 07:08:42
【问题描述】:
我有从 SQL Server 获取输出的 csv 格式的数据。数据有一些写出的NULL 和N.A. 值,它们构成了列字符类型——否则它只会由整数组成。是否可以通过批处理文件语句来查找这些值并将其替换为数字 - 例如,-1 表示NULL,-2 表示N.A.。以下是数据现在的样子:
Col A, Col B, Col C, Col D, Col E, Col F, Col G, Col H
NULL, 13, 11, N.A., 4710, N.A., 1, 1
5, NULL, 13, 7070, N.A., 4920, N.A., 1
5, NULL, 12, 8680, N.A., 9130, N.A., 1
我想把它转换成这个:
Col A, Col B, Col C, Col D, Col E, Col F, Col G, Col H
-1, 13, 11, -2, 4710, -2, 1, 1
5, -1, 13, 7070, -2, 4920, -2, 1
5, -1, 12, 8680, -2, 9130, -2, 1
通过批处理语句执行此操作很重要,因为这是一个中间输出,并且会立即被另一个程序读入。我查看了findstr 命令(http://technet.microsoft.com/en-us/library/bb490907.aspx),但我知道如何编写确切的语法并执行替换操作。非常感谢有用的输入!
【问题讨论】:
-
我面前没有一台 Windows 机器来破解这个,但我想你需要使用
for命令来遍历文件中的行并在输出令牌时修改它们。您还需要注意EnableDelayedExpansion如何影响循环内的行为。如果您可以修改 SQL 查询以产生您想要的结果,这将是一项容易得多的任务。此外,由于您使用的是 Windows 命令行,请考虑运行cscript的 Windows 脚本主机
标签: batch-file csv command-line replace findstr