Autor Zpráva
e1sokol
Profil
Mam jednu otazku.
Ako zrealizovat aby mi databaza ulozila pri "save to file SUBOR" udaje na iny server ako je insalovany db server.

MySQL je instalovana pod Linuxom a aplikacia v PHP bezi na samostatnom PC pod Windows. ( v buducnosti bude aj tato aplikacia prenesena na Linux ale zasa na solo server )

Vdaka za odpoved.
Kajman_
Profil *
Těžko říct, co je "save to file SUBOR", ale z jiných strojů lze zálohovat např. pomocí mysqldump.
Kajman_
Profil *
A když ukládáte v tom php na windows, tak zapisujete na ten linuxový server? To mi přijde divné.
Anonymní
Profil *
1)
A když ukládáte v tom php na windows, tak zapisujete na ten linuxový server? To mi přijde divné.

Nie aplikacia uklada data na sever, na ktorom bezi.


2)
Těžko říct, co je "save to file SUBOR", ale z jiných strojů lze zálohovat např. pomocí mysqldump.

$subor = "c:datazoznam.txt"; // adresar na servri kde bezi apache a php script

Tak to upresnim:
select klienti.meno, klienti.priezvisko
into outfile '$subor'
fields terminated by ';' enclosed by '"'
lines terminated by ' '
from klienti

Kedze je definivana cesta na lokalny server, poradte ako definovat cestu na inu IP adresu?

Vdaka za odpoved.
nightfish
Profil
The SELECT ... INTO OUTFILE statement is intended primarily to let you very quickly dump a table to a text file on the server machine. If you want to create the resulting file on some client host other than the server host, you cannot use SELECT ... INTO OUTFILE. In that case, you should instead use a command such as mysql -e "SELECT ..." > file_name to generate the file on the client host.

Konstrukce SELECT ... INTO OUTFILE je v zaměřena hlavně na umožnění rychlého výpisu tabulky do textového souboru na serveru. Jestliže chcete výsledný soubor vytvořit na klientovi, nemůžete použít SELECT ... INTO OUTFILE. V takovémto případě byste místo toho měli použít příkaz, jako třeby mysql -e "SELECT ..." > jmenosouboru.

Poznámka: Ten příkaz mysql -e "SELECT ..." > jmenosouboru je samozřejmě potřeba spouštět na tom klientovi s tím, že k mysql serveru je povolen přístup z klienta. (Nicméně v tom případě bych stejně použil spíš mysqldump)
Kajman_
Profil *
Proč si v tomhle případě prostě neuděláte obyčejný select na ty dva sloupečky a neuložíte to přímo v php na klientu?
e1sokol
Profil
Kajman_



Zasláno: 12.1.2007 12:48:16
Citovat


Proč si v tomhle případě prostě neuděláte obyčejný select na ty dva sloupečky a neuložíte to přímo v php na klientu?


Tu slo iba o priklad, ja potrebujem selektovat radovo MB. Obcas aj 20MB a viac a to spravovavat na urovni PHP je trosku narocne, pocinajuc nastavenim PHP ( ktore nemusi byt byt v mojej sprave ).
e1sokol
Profil
nightfish
Moderátor



Zasláno: 12.1.2007 09:20:50
Citovat

...

Poznámka: Ten příkaz mysql -e "SELECT ..." > jmenosouboru je samozřejmě potřeba spouštět na tom klientovi s tím, že k mysql serveru je povolen přístup z klienta. (Nicméně v tom případě bych stejně použil spíš mysqldump)


Ak to chapem, MySQL klienta si nainstalujem na lokalnom servri a cez tohto klienta budem pristupovat k vzdialenemu servru?
nightfish
Profil
Ak to chapem, MySQL klienta si nainstalujem na lokalnom servri a cez tohto klienta budem pristupovat k vzdialenemu servru?
ano, tak to je....
e1sokol
Profil
nightfish

Ako potom vyzera script v PHP, hlavne poklial ide o connection a tvorbu prikazu select.

Vdaka za odpoved.
nightfish
Profil
áááha, přehlédl jsem to formátování výstupu - to zavrhuje mysql i mysqldump
takže je to potřeba udělat přes php

mysql_connect("adresaServeru:port", "login", "heslo");

mysql_select_db("jmenoDatabaze");
$fp = fopen("nazevSouboru", "w");

$result = mysql_query("select klienti.meno, klienti.priezvisko from klienti");
while ($data = mysql_fetch_row($result)) {
list($meno, $priezvisko) = $data;
fputs($fp, ""$meno";"$priezvisko"\n");
}
fclose($fp);
mysql_close();
e1sokol
Profil
srdecna vdaka, tiez som uvazal o rieseni na urovni PHP.

este jedna otazka? rychlost pri velkych objemoch udajov radovo 10 - 30 MB. ale to si otestujem osobne.
Toto téma je uzamčeno. Odpověď nelze zaslat.