【发布时间】:2016-04-08 23:31:38
【问题描述】:
我遇到了一个特定的问题。
我工作的公司使用的监控软件(用于制造车间的机器人)每 15 分钟生成一个日志文件 (.sdat)。日志文件的内容如下所示:
语法:Time;machine;status
13:53:23;KP85;ms:9999
13:53:49;KP85;ms:3
13:54:54;KP85;ms:4
14:06:04;KP85;ms:9999
13:51:38;Robot1;ms:9999
等等……
我已经设法将所有日志文件连接到一个大文件中,包括每个新行开头的文件名,如下所示:
语法:Filename:Time;Machine;Status
01-03-2016-00-20.sdat:0:07:40;KP65;ms:3
01-03-2016-00-20.sdat:0:09:09;KP65;ms:4
01-03-2016-00-20.sdat:0:09:11;KP65;ms:3
01-03-2016-00-20.sdat:0:09:13;KP65;ms:4
等等。
我这样做的原因是因为我需要时间和日期(包含在文件名中)已经记录了机器的特定状态。但是,如果我将其导入 SQL 管理工作室,它会识别 3 列而不是 4 列,因为文件名和第一列(时间)由“:”而不是“;”分隔。我尝试用 SQL Query 解决它,用 LEFT() 和 RIGHT() 分隔日期和时间,但猜猜看:当时间从 9:59:59 切换到 10:00:00 时,时间字段格式会发生变化,为时间字段创建一个额外的字符(因此列中的数据看起来像这样 ':9:59:59',这不是有效的时间字段)。也许它可以用 SQL 来完成,但在我看来,对于这样一个小问题,SQL 代码会花费太多的复杂性。
所以在这一点上,我认为尽早解决这个问题会更好;在生成大文件的批处理文件中,因此 Management Studio 确实识别 4 列而不是 3 列。这就是我的 .bat 文件现在的样子:
@echo off
findstr "^" *.sdat >output.txt
我该怎么做才能做到这一点?
提前致谢,
迈克·索恩斯
【问题讨论】:
标签: sql batch-file logging concatenation