2010-05-10 3 views
0

400MB 정도의 큰 SQL 덤프가 있습니다.검색 및 바꾸기

"INSERT INTO 사용자 값 ('사용자 ID', '사용자 이름', '비밀번호', '0', '0', '이메일', '성별', '생일', '182 ','13 ','640 ','Married ','Straight ','Yes ','Yes ','1146411153 ','1216452123 ','1149440844 ','0 ','picture ','1 030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 비밀 번호를 밖으로, 나는 다른 테이블로 사용자를 가져오고 싶습니다.

누구든지이 작업을 수행 할 수 있으며 전자 메일 암호를 해당 내용에서 제거하는 방법을 알고 있습니까?

perl -ne '@m = split /,/; print $m[5], $m[2], "\n";' <your400MB.sqldump 
+1

에 액세스 할 수 없습니다 그런 다음 이메일과 비밀번호 만 선택하여 질문을 보내십시오. – FMc

답변

2

에 감사드립니다 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 파서를 사용한다 데이터베이스로 SQL 덤프를로드하지 왜 내가 환경에서 지금이야 이후 테스트하지 현대 CSV_XS :(

+0

필드에 쉼표가있을 수 있습니다. –

+0

굉장히 잘되어서 고마워요. 많이 고마워요! –

+0

I/O 리디렉션 (http : // en. wickipedia.org/wiki/Redirection_%28computing%29). BTW Kinopiko가 맞습니다. 그 이유 중 하나는 __partial__을 내 답변에 썼습니다. –

0

더 짧은 펄 oneliner-솔루션

perl -F, -anE 'say $F[5], $F[2];' file 
1

Kinopiko로 : 귀하의 질문에 "펄"하나 개 부분 솔루션을 태그하기 때문에

사전

+0

+1 올바른 모듈을 CSV로 구문 분석 할 수 있습니다. 한 가지 문제는 언급 한대로입니다. 나는 환경에서 ... 그렇지 않으면, 때로는 무력이 할 것입니다. –