| |
|
|
| | Подскажите пожалуйсто, как записать в текстовыйфайл данные из MySQL из таблицы TAB1 в следующем виде:
text1_1 | text2_1 | text3_1 | text4_1
text1_2 | text2_2 | text3_2 | text4_2
text1_3 | text2_3 | text3_3 | text4_3
каждая строчка в текстовом файле это она строчка в таблице.
а потом надо прочитать эти данные и записать в таблицу TAB2 . также как они были записаны в TAB1. скрипт по записи в файл и чтения из файла должны быть в разных php файлах. ПОМОГИТЕ! | |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 19:38)
| | | А может лучше сразу из одной таблицы в другую? | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 20:27)
| | | не, так не получится :)
мне надо перенести данные с одного хоста на другой. а дамп правильно не работает (проблемы с кодировкой). | |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 20:34)
| | | Ну эти проблемы решаемы...
A доступ по SSH есть? | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 20:35)
| | | а поподробнее насчет ssh. я еще не очень в этом деле. | |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 20:40)
| | | Ну это доступ к серверу через консоль. Через неё же можно сделать дамп таблиц или сразу скопировать файл базы данных... | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 20:42)
| | | тогда доступа нет. И еще мне хочется сделать это на пхп, чтобы получить опыт. | |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 20:43)
| | | Ну вообще ваш вариант не очень хороший, во первых потому что он не очень хороший (:)) а во вторых если например в таблице поля будут такие
field[0] = "string";
field[1] = "st|ring";
field[2] = "strin|g";
|
тогда в файл запишется:
...
string|st|ring|strin|g
...
|
И уже не совсем понятно где что. Поэтому все символы | надо экранировать например слешами, т.е.
...
string|st\|ring|strin\|g
...
|
Если Вас это устроит, то можно попробовать | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 20:42)
| | | вот скрипт на запись в файл:
<?php
include("config.php");
/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
/* Выбрать все датчики */
$query = "SELECT * FROM $userstable1 ";
$result = @mysql_query($query);
/* Как много нашлось */
$number = MYSQL_NUMROWS($result);
WHILE ($i < $number){
$nametype = mysql_result($result,$i,"nametype");
$descrtype = mysql_result($result,$i,"descrtype");
$fp=fopen("type.txt","a+");
fwrite($fp,$nametype."|".$descrtype."\r\n");
fclose($fp);
$i++;
}
?>
|
а как теперь из этого файла вставить в БД? | |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 20:49)
| | | Много лишнего, к тому же, зачем вы в цикле открываете и закрываете файл? Вот мой вариант:
<?php
include("config.php");
if(!@mysql_connect($hostname,$username,$password)) exit(mysql_error());
if(!@mysql_select_db($dbName)) exit(mysql_error());
$query = mysql_query("SELECT * FROM $userstable1");
if(mysql_num_rows($query) > 0)
{
$f = fopen("type.txt","r");
while($fetch = mysql_fetch_array($query))
{
fwrite($f,str_replace("|","\\|",$fetch['nametype'])."|".str_replace("|","\\|",$fetch['descrtype'])."\n");
}
fclose($f);
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 20:56)
| | | А можно пример вывода и записи в БД? | |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 21:03)
| | | Момент. | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 21:05)
| | | Вроде такого, проверьте:
<?php
include("config.php");
if(!@mysql_connect($hostname,$username,$password)) exit(mysql_error());
if(!@mysql_select_db($dbName)) exit(mysql_error());
function user_explode($separator,$string)
{
$buf = "";
unset($ret_array);
for($i = 0; $i < strlen($string); $i++)
{
if($string[$i] == $separator && $string[$i - 1] != "\\")
{
$ret_array[] = $buf;
$buf = "";
}
else
{
$buf.= $string[$i];
}
}
$ret_array[] = $buf;
return $ret_array;
}
$f = fopen("type.txt","r");
if($f)
{
while(!feof($f))
{
$line = fgets($f);
$arr = user_explode("|",trim($line));
mysql_query("INSERT INTO $userstable1() VALUES('".mysql_escape_string($arr[0])."','".mysql_escape_string($arr[1])."')");
}
}
fclose($f);
?>
|
| |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 21:14)
| | | спасибо за скрипт. А можите подредактировать вот этот:
<?php
include("config.php");
/* создать соединение */
MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не могу создать соединение ");
@mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
$file = file("type.txt");
$count = count($file);
for($i = 0; $i < $count; $i++){
$typedat = explode("|", $file[$i]);
$query = "INSERT INTO $userstable2(nametype, descrtype) VALUES('$typedat[0]', '$typedat[1]')";
}
MYSQL_CLOSE();
?>
|
| |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 21:20)
| | | Ну впринципе все правильно, только здесь:
$typedat = explode("|", $file[$i]);
|
$file[$i] замените на trim($file[$i]) это нужно чтобы убрать символы переноса строки в конце строки. Ну и explode замените на ту функцию что я написал, хотя если в самих данных символ | у вас точно не встречается, тогда этого можно и не делать. | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 21:34)
| | | А в функции user_explode надо что то менять? | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(16.05.2006 в 21:34)
| | | пробывал Ваш скрипт все работает. а свой нет. я поменял строчки
$typedat = explode("|", $file[$i]);
|
на
$typedat = explode("|", trim($file[$i]));
|
не работает, потом
$typedat = explode("|", trim($file[$i]));
$query = "INSERT INTO $userstable2(nametype, descrtype) VALUES('$typedat[0]', '$typedat[1]')";
|
заменил на
$typedat = explode("|", trim($file[$i]));
$query = "INSERT INTO $userstable2(nametype, descrtype) VALUES('".mysql_escape_string($typedat[0])."','".mysql_escape_string($typedat[1])."')";
|
все равно не работает. в чем проблема??? | |
| |
|
|
| |
|
|
| |
для: Spenser
(16.05.2006 в 21:58)
| | | Эмм, а что значит не работает? Ошибку какую то выдает? | |
| |
|
|
| |
|
|
| |
для: Евгений Петров
(17.05.2006 в 14:31)
| | | Нет, ошибки не выдает. Просто не записывает в таблицу и все. | |
| |
|
|