Из txt в БД

Статус
В этой теме нельзя размещать новые ответы.

Ozz99

Постоялец
Регистрация
15 Май 2009
Сообщения
199
Реакции
169
Имеем файл с именем fail.txt Структура такая
Одно предложение
Второе предложение
ещё одно
и так далее
всего 5000 строк
Нужен скрипт который загонит всё это хозяйство в БД в таблицу под именем tablica в поле под именем pole с ид от 1234 по id 5678 (параметр настраиваемый.) и перезапишет там все данные, на данные из файла. Кому не жалко потратить нескольк минут и выложить, буду благодарен. Либо пишите в личку я готов купить за умеренную плату.
 
Тип БД какой?
 
Тип MySQL

Вот так
 
PHP:
$from = 1234;
$to = 5678;

$current = $from;
foreach ( file( 'import.txt' ) as $line )
{
if ( $current > $to )
{
  break;
}

$line = trim( $line );
if ( '' === $line )
{
continue;
}

mysql_query( "
INSERT INTO
`tablica`
SET
`id` = {$current},
`pole` = '" . mysql_real_escape_string( $line ) . "'
ON DUPLICATE KEY UPDATE
`pole` = '" . mysql_real_escape_string( $line ) . "'
" );

++$current;
}

P.S. поле id - должно иметь уникальный ключ. $to - а зачем? зависит от кол-ва строк в файлике ведь :)

т.к. строк всего 5000 это будет норм, но я всегда делаю в innodb с транзакциями и мульти-инсертами
 
Немного не то, Он просто дописывает в базу новые строки с тем же самым ИД, а надо что бы заминил в поле pole все записи с ид от 1234 до ид 5678, при этом не тронув поле pole1, pole2, pole3

Всё разобрался и сделал то что надо, немного код поменял
 
по моему phpMyAdmin умееет экспортировать даже txt файлы.. ну а если я не прав, то сделай из txt -> csv с разделителями. и все щаливай как хош
 
А может кто поможет

Я вот эту часть кода заменил

PHP:
mysql_query( "
INSERT INTO
`tablica`
SET
`id` = {$current},
`pole` = '" . mysql_real_escape_string( $line ) . "'
ON DUPLICATE KEY UPDATE
`pole` = '" . mysql_real_escape_string( $line ) . "'
" );

И в результате он мне перезаписаывает нужные строки, а как сделать так что бы он не перезаписывал эти строки, а просто текст дописывал. Какая функция для этого нужна.

Например в базе есть строка текста

Вот такая строка текста

И я хочу что бы из тхт взял строку
И получилось в итоге в базе вот так
Вот такая строка текста
ещё строчка
 
Код:
mysql_query( "
INSERT INTO
`tablica`
SET
`id` = {$current},
`pole` = '" . mysql_real_escape_string( $line ) . "'
ON DUPLICATE KEY UPDATE
`pole` = CONCAT( `pole`, "\n", '" . mysql_real_escape_string( $line ) . "' )
" );

Попробуйте так
 
А может кто поможет
Я вот эту часть кода заменил
PHP:
mysql_query( "
INSERT INTO
`tablica`
SET
`id` = {$current},
`pole` = '" . mysql_real_escape_string( $line ) . "'
ON DUPLICATE KEY UPDATE
`pole` = '" . mysql_real_escape_string( $line ) . "'
" );
И в результате он мне перезаписаывает нужные строки, а как сделать так что бы он не перезаписывал эти строки, а просто текст дописывал. Какая функция для этого нужна.
Например в базе есть строка текста
И я хочу что бы из тхт взял строку
И получилось в итоге в базе вот так
Для такого надо использовать UPDATE
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху