我有SQl转储文件34 GB
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
....
答案 0 :(得分:1)
没有在一个大的文件上试过它,但是如下:
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);