Batch file 从大文本文件批处理中提取所有字符串
我有34 GB的SQl转储文件Batch file 从大文本文件批处理中提取所有字符串,batch-file,cmd,extract,text-extraction,Batch File,Cmd,Extract,Text Extraction,我有34 GB的SQl转储文件 CREATE TABLE `table1` CREATE TABLE `table6` CREATE TABLE `table44fff` CREATE TABLE `tablecvd` 我需要快速提取所有表的名称,我想一定是这样的 FOR /F "tokens=* delims=" %%A IN ('db1.sql ^| FIND "CREATE TABLE `"') DO ECHO %%A > output.txt 但是我的文件太大了,所以出错了 我
CREATE TABLE `table1`
CREATE TABLE `table6`
CREATE TABLE `table44fff`
CREATE TABLE `tablecvd`
我需要快速提取所有表的名称,我想一定是这样的
FOR /F "tokens=* delims=" %%A IN ('db1.sql ^| FIND "CREATE TABLE `"') DO ECHO %%A > output.txt
但是我的文件太大了,所以出错了
我需要在输出文件中获取表名列表
table1
table6
table44fff
tablecvd
....
我还没有在这么大的文件上尝试过,但是下面呢:
FOR /F "tokens=2 delims=`" %%A IN (
'findstr "CREATE TABLE" db1.sql'
) DO (
ECHO %%A >> output.txt
)
根据请求,在Perl中,这可以通过以下方式完成:
#!/usr/bin/perl
use v5.14;
open(IN, "<", "db1.sql");
open(OUT, ">>", "output.txt");
while (<IN>) {
if(/^CREATE TABLE `(.*)`/){
say OUT $1;
}
}
close(IN);
close(OUT);
#/usr/bin/perl
使用v5.14;
打开(在“>”和“output.txt”中);
而(){
如果(/^CREATE TABLE`(.*)`/){
说出1美元;
}
}
关闭(IN);
收尾;
您需要使用与本地代码(例如,C++、爪哇、C语言)相近的语言进行流处理。批处理速度慢。是的,mihai_mandis是对的。即使像Perl这样的语言也能更快地解析这个大文件。