【发布时间】:2020-03-31 00:53:20
【问题描述】:
我有一个程序可以从许多其他文件中提取数据以形成一个大的(~200MB)批量 SQL 插入语句
INSERT INTO ...
VALUES
('a','b',1,2,3),
('c','d',4,5,6),
不幸的是,最后一行需要以分号而不是逗号结尾。有没有办法(最好在我的 perl 程序中)只将最后一个字符从 , 变成 ;?
我尝试过的事情:
1) 文件完成并关闭后:
open(DAT,">>$output") || die("Cannot Open File");
seek(DAT, 2, SEEK_END);
print DAT ";";
close(DAT);
这只是在最后放置一个分号。
2) 在我的 perl 程序中调用 `perl -p -i -e 's/,$/;/g' $output`;,但这会替换每个逗号。
3) 打印最后一行时,以分号而不是逗号结尾。但是这不起作用,因为在写完该行之前我实际上并不知道它是最后一行。
4) 将整个文件复制到一个新文件中,除了最后一个字符是; 而不是,。然而,这很慢,因此并不理想。
【问题讨论】:
-
你反对 CPAN 模块吗?
-
不幸的是,是的。它在安装限制非常严格的外部服务器上运行。不确定哪些模块可用。不是最好的环境。
标签: perl