我有一个非常大的SQL转储大约400MB。
它采用以下格式,“INSERT INTO用户值('USERID','USERNAME','PASSWORD','0','0','EMAIL','GENDER','BIRTHDAY','182' ,'13','640','已婚','直','','是','是','1146411153','1216452123','1149440844','0',图片','1' ,'0','0','zip','0','','0','','','0')“
无论如何我可以从中获取电子邮件和密码,我想将用户导入另一个表。
任何人都知道如何做到这一点,只是从该内容中删除了电子邮件密码?
提前谢谢
答案 0 :(得分:2)
因为您的问题被标记为“perl”,一个部分解决方案:
perl -ne '@m = split /,/; print $m[5], $m[2], "\n";' <your400MB.sqldump
答案 1 :(得分:1)
正如Kinopiko所说,运行拆分解析CSV文件不是一个好主意(例如字段内的逗号等)。您应该使用CSV解析器,如下所示:
use strict;
use Text::CSV_XS;
my $csv_obj = Text::CSV_XS->new({allow_whitespace=>1, quote_char => "'"})
|| die "Error\n";
while (<>) {
$csv_obj->parse($_);
my @fields = $csv_obj->fields();
print "$fields[2],$fields[5]\n"
}
注意:未经测试,因为我现在在环境中无法访问现代CSV_XS :(
答案 2 :(得分:0)
较短的Perl-one衬垫溶液
perl -F, -anE 'say $F[5], $F[2];' file