Здравствуйте, подскажите возможно ли как-то осуществить следующую задачу
Есть 2 файла txt, в них email адреса, в одном ненужные адреса , в другом вся база.
Как удалить из базы(второй файл) содержимое первого файла(ненужные адреса), удалять вручную несколько тысяч адресов очень долго. Есть программа A.F.9 Replace some bytes 1,2. Но опять же сначала нужно копировать по одному адресу в форму и добавлять, а сразу все не представляется возможным , это не имеет смысла , т.к еще дольше по времени получится.
dollar, у меня есть скрипт который удаляет только один email за раз, как сделать так чтобы удалял список из textarea например не могу понять
<?php
\error_reporting(0); // запрещаем вывод сообщений о возможных ошибках
function test_mail($char) { // функция, проверяющая реальность адреса
return (boolean) \preg_match('/[\w\d\._-]+@[\w\d\._-]+\.[\w\d]{2,}/u', $char);
}
function find_mail($maillist, $email) { // функция, проверяющая наличие адреса в базе
$result = FALSE;
foreach ($maillist as $key => $part) {
if ($email == \trim($part)) {
$result = $key; // возвращаем порядковый номер адреса, если он найден
break;
}
}
return $result;
}
function add_mail($file, $email) {
\file_put_contents($file, "$email\n", FILE_APPEND);
}
function remove_mail($file, $maillist, $key) {
unset($maillist[$key]);
\file_put_contents($file, \implode('', $maillist));
}
$message = ''; // здесь будет сообщение о результате действия
if (!empty($_POST)) { // если форма отправлена
$fromemail = 'admin'; // адрес администратора для отправки ошибок
$email = \trim(\strtolower(\htmlentities($_POST['email']))); // очищаем введённый адрес
$file = "maillist.txt"; // файл, содержащий адреса
if (\file_exists($file)) { // файл существует
$maillist = \file($file);
if (!empty($email) && test_mail($email)) { // email не пустой и правильный
$key = find_mail($maillist, $email); // номер адреса в базе или FALSE, если такого нет
if (isset($_POST['subscribe'])) { // запрошена подписка на рассылку
if ($key === FALSE) { // email нет в базе
add_mail($file, $email);
$message = "E-mail: $email добавлен в базу рассылки.";
} else { // email уже есть в базе
$message = "E-mail: $email уже есть в базе рассылки.";
}
} elseif (isset($_POST['unsubscribe'])) { // запрошена отписка от рассылки
if ($key === FALSE) { // email нет в базе
$message = "E-mail: $email не найден в базе рассылки.";
} else {
remove_mail($file, $maillist, $key);
$message = "E-mail: $email удален из базы рассылки.";
}
}
} else { // email пустой или неправильный
$message = "E-mail: $email не сушествует.";
}
} else { // файл не существует
$message = "Не найден файл $file ! Пожалуйста <A HREF=\"mailto:$fromemail\">сообщите</a> мне об ошибке.";
}
}
\header('Content-Type: text/html; charset=utf-8;');
?>
<p><?=$message?></p>
<form method="post">
<fieldset>
<legend>Отписаться от рассылки</legend>
<label for="email">Введите e-mail:</label>
________________
!!!!!<textarea type="text" id="email" name="email" size="30" required></textarea>!!!!!
_______________
<input type="submit" name="unsubscribe" value="Отписаться">
</fieldset>
</form>
Ну например гуглить сначала "load csv to sqlite" потом "sql not in query" потом "export sqlite to csv"
Подозреваю что еще не один десяток вариантов найдется
Владимир stul5tul я установил sqlite3 только вот этот скрипт не удаляет содержимое второго файла из первого.. в чем может быть проблема? email в файлах по одному в строке записаны
create table file1(line text);
create index if1 on file1(line ASC);
create table file2(line text);
create index if2 on file2(line ASC);
.import 'c:\sql\r\mail.txt' file1
.import 'c:\sql\r\r.txt' file2
.output res.txt
select * from file2 where line not in (select line from file1);
Владимир, так он удаляет также по одному email которые я ввожу в поле VALUES
('admin2@sqlfiddle.com'); это еще дольше чем в ручную из блокнота. Возможно ли как-то удалить сразу список адресов ? из file1.txt удалить все что находится в file2.txt?
magic_healthy_hair, Я просто привел пример, SQL работает. Видимо после импорта двух файлов не мешало бы подключиться к базе графическим инсрументом, и посмотреть чего вы туда наимпортировали.
Гуглить по фразе SQLite GUI