Перенос баз с локальной машины на сервер хостера и наоборот.

Игорёк

Новичок
Перенос баз с локальной машины на сервер хостера и наоборот.

Подскажите, есть ли удобные php-скрипты для переноса баз
с локальной машины на сервер хостера и наоборот?
У моего хостинга нет доступа к командной строке и я
не могу запускать команды типа mysqldump.

Там установлен phpmyadmin. Но это такая неудобная вещь
для выполнения переноса баз. Во-первых, он выдает базу прямо
на экран! Мне нужно перенести около 50Мб, и с такой базой
это вообще не получается. Далее, можно сделать дамп базы в
виде сжатого файла, но в phpmyadmin промежуточный результат
(перед сжатием) сохраняется в памяти! А у хостера есть
ограничение на использование памяти скриптом в 8 Мб!
Я просто зае..ся с этим phpmyadmin.

Неужели нет никакого средства получше? Чтобы скрипт нормально
выполнял задачу, был небольшого размера и его можно было легко
установить у хостера. Естественно, хорошо если он сам сжимает
базу, чтобы не возиться еще с написанием скриптов для ее сжатия.
 

nagash

Guest
сам напиши скриптец... и переноси как тебе будет удобно...
 

Yurik

/dev/null
1. Закачиваешь файл БД на сайт по фтп, желательно не скл запросы, а данные
2. Из пхп запускаешь квери "LOAD DATA LOCAL INFILE 'filename' INTO TABLE...." c твоим файлом, это значительно быстрее запросов. LOAD DATA он на несколько порядков быстрее инсерт - например 1мбайтная база загружалась через лоад за 1-2 сек а INSERT порядка 20 мин!
Кстати это же делает майадмин - "Вставить текстовые файлы в таблицу "
 

nagash

Guest
Yurik
у него главная проблема сохранить эти данные чтобы потом уже с ними что-то делать...
 

Игорёк

Новичок
Originally posted by Yurik
1. Закачиваешь файл БД на сайт по фтп, желательно не скл запросы, а данные
2. Из пхп запускаешь квери "LOAD DATA LOCAL INFILE 'filename' INTO TABLE...." c твоим файлом, это значительно быстрее запросов. LOAD DATA он на несколько порядков быстрее инсерт - например 1мбайтная база загружалась через лоад за 1-2 сек а INSERT порядка 20 мин!
Мне не совсем понятно. Ведь если я загружу таблицу (а не базу в целом - ведь там INTO TABLE) таким способом, а не через INSERT'ы (в дампе именно INSERT'ы записаны), то индексы не будут созданы? А мои таблицы должны быть проиндексированы.
 

Yurik

/dev/null
Вместо
INSERT INTO t VALUES (1, 4, 'Vasya', 'Pupkin');
INSERT INTO t VALUES (1, 4, 'Petya', 'Pepkin');
будет
"1";"4";"Vasya";"Pupkin";
"1";"4";"Petya";"Pepkin";

Вставляться и индексироваться они будут одинаковым образом, только второй - в 1000 раз быстрее. Все это делает майадмин. Но закачивать по понятным причинам придется по ФТП (ограничение 2М на хттп закачку)
 

Nikolas

Guest
проще написать все самому:
экспортишь данные в файл (к примеру CSV)
Затем файл заливаешь на сервер по FTP.
по принципу экспорта имортишь из этого файла данные в базу.
 

Ventura_forever

Новичок
А вот я совсем новичок в этих делах. Как мне наиболее лучшим способом закачать базу на хост обьёмом в 4-5 мег?
Лучше конечно через ФТП, а что потом делать? И какие файлы необходимо закачивать?
 

Фанат

oncle terrible
Команда форума
утилитой mysqldump сделать дамп базы.
на сервере утилитой mysql < dump.sql залить
 

Yurik

/dev/null
2Ventura_forever:
а) У моего хостинга нет доступа к командной строке и я
не могу запускать команды типа mysqldump.
- читаем мои посты
б) читаем посты Фаната
в) иногда можно файлы просто копирнуть как они есть, но лучше не делать и для этого доступ рут нужен. это на локалке при остановленном сервере и одинаковых версиях мыскла можешь делать.
 

Mr.Denis

Guest
Hell o :)

Нудак вот :)

Получаеться, что если на хостере нет командной строки...
Или как в моем случае не дозволено делать LOAD DATA INFILE
То кромя как писать свою с(за)гружалку выхода нема.... ?
тада лучше это как сделать.... сгрузить ее понятно как (csv).
А загружать.... ?
Зааплоадить файло на сервак, а потом пхпшными средствами читать и инсертить... как такой вариант ? Рационально ? :)
Это не тоже самое, что ехать в Москву через Владивсоток как говорила моя учительница математики. :))
 

Bloody

Guest
2Mr.Denis:

См. пост Фаната, за исключением того, что залить можно не через mysql<dump.sql, а с помощью phpmyadmin, который у хостера НУ ОБЯЗАН БЫТЬ!
 

Dem anywhere

Guest
Надо всё отдельно сделать - один файл со структурой базы (где CREATE всякие) и командой загрузки - заливается и запускается обычным образом
Можно прямо в РНР воткнуть...
А на сервере в этот момент должен лежать CSV с данными (предварительно залитый)
 

pauk

Новичок
Re: Перенос баз с локальной машины на сервер хостера и наоборот.

Автор оригинала: Игорёк
Подскажите, есть ли удобные php-скрипты для переноса баз
с локальной машины на сервер хостера и наоборот?
У моего хостинга нет доступа к командной строке и я
не могу запускать команды типа mysqldump.

Там установлен phpmyadmin. Но это такая неудобная вещь
для выполнения переноса баз. Во-первых, он выдает базу прямо
на экран! Мне нужно перенести около 50Мб, и с такой базой
это вообще не получается. Далее, можно сделать дамп базы в
виде сжатого файла, но в phpmyadmin промежуточный результат
(перед сжатием) сохраняется в памяти! А у хостера есть
ограничение на использование памяти скриптом в 8 Мб!
Я просто зае..ся с этим phpmyadmin.

Неужели нет никакого средства получше? Чтобы скрипт нормально
выполнял задачу, был небольшого размера и его можно было легко
установить у хостера. Естественно, хорошо если он сам сжимает
базу, чтобы не возиться еще с написанием скриптов для ее сжатия.
PHP:
<?php
include("_connect.inc");

#----file-table--------
$file1="bk1.csv";	$table1="one_tbl";
$file2="bk2.csv";	$table2="two_tbl";
$file3="bk3.csv";	$table3="three_tbl";

#----function back up database-----
function backup($file,$table)
{
touch($file);
$query="SELECT * FROM $table";
$result=mysql_query($query);
$fp=fopen($file,'w') or die("Error Open $file");
flock($fp,2);

while($row=mysql_fetch_row($result))
	{
	foreach($row as $field)	{fwrite($fp,"$field".",");}
	fputs($fp,"\n");
	}

flock($fp,3);
fclose($fp);
}

#---Back Up Procedure----
backup($file1,$table1);
backup($file2,$table2);
backup($file3,$table3);

mysql_close();
?>
 
Сверху