【问题标题】:Extract all string from large text file Batch从大文本文件批处理中提取所有字符串
【发布时间】:2014-02-04 14:52:31
【问题描述】:

我有 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

但是我得到错误我的文件太大了

我需要在输出文件中获取表名列表

table1
table6
table44fff
tablecvd
....

【问题讨论】:

    标签: batch-file cmd extract text-extraction


    【解决方案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);
    

    【讨论】:

    • 您需要使用一种/接近本机代码的语言(例如,C++、Java、C#)进行一些流处理。批处理很慢。
    • 是的,mihai_mandis 是对的。即使是像 Perl 这样的语言也会更快地解析这个大文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多