Поиск и замена - PullRequest
       33

Поиск и замена

0 голосов
/ 10 мая 2010

У меня действительно большой дамп SQL около 400 МБ.

Это в следующем формате: «ВСТАВИТЬ В ЗНАЧЕНИЯ ПОЛЬЗОВАТЕЛЯ» («USERID», «USERNAME», «PASSWORD», «0», «0», «EMAIL», «GENDER», «BIRTHDAY», «182») , «13», «640», «Женат», «Прямо», «», «Да», «Да», «1146411153», «1216452123», «1149440844», «0», фотография »,« 1 » , '0', '0', 'zip', '0', '', '0', '', '', '0') "

Есть ли в любом случае, я могу просто получить адрес электронной почты и пароль, я хочу импортировать пользователей в другую таблицу.

Кто-нибудь знает, как я могу это сделать и просто удалить из этого содержимого адрес электронной почты?

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 10 мая 2010

, так как ваш вопрос помечен как "perl", одно частичное решение:

perl -ne '@m = split /,/; print $m[5], $m[2], "\n";' <your400MB.sqldump
1 голос
/ 10 мая 2010

Как сказал Кинопико, запуск split для анализа 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: (

0 голосов
/ 10 мая 2010

более короткий Perl-oneliner-решение

perl -F, -anE 'say $F[5], $F[2];' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...