/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Udføre SQL i en fil
Fra : Carsten Madsen


Dato : 07-09-01 17:15

Jeg vil gerne udføre noget SQL på mange linier der ligger i en fil. Hvordan
kan jeg sende det til MySQL - har ikke adgang til phpMyAdmin som har
genereret filen?

/Carsten



 
 
Søren Gørtz Olesen (07-09-2001)
Kommentar
Fra : Søren Gørtz Olesen


Dato : 07-09-01 17:15



"Carsten Madsen" <carstensm@hotmail.com> skrev i en meddelelse
news:3b98f146$0$3241$ba624c82@nntp01.dk.telia.net...
> Jeg vil gerne udføre noget SQL på mange linier der ligger i en
fil. Hvordan
> kan jeg sende det til MySQL - har ikke adgang til phpMyAdmin
som har
> genereret filen?
>
> /Carsten
>
>
Download en MySQL klient og eksikver det fra din egen pc.



Carsten Madsen (07-09-2001)
Kommentar
Fra : Carsten Madsen


Dato : 07-09-01 17:33

> Download en MySQL klient og eksikver det fra din egen pc.

Jeg skal tilgå MySQL serveren via localhost, så scriptet/SQL'en skal vel
udføres fra websitet?!?

Carsten



Niels Andersen (07-09-2001)
Kommentar
Fra : Niels Andersen


Dato : 07-09-01 17:42

"Carsten Madsen" <carstensm@hotmail.com> wrote in message
news:3b98f576$0$3246$ba624c82@nntp01.dk.telia.net...
> Jeg skal tilgå MySQL serveren via localhost, så scriptet/SQL'en skal vel
> udføres fra websitet?!?

Hvis sitet er på samme maskine som databasen, så ja.

Med PHP:

<?
$sql = file('dinfil.sql');
foreach($sql AS $line) {
mysql_query($line);
}
?>



Anders Johannsen (07-09-2001)
Kommentar
Fra : Anders Johannsen


Dato : 07-09-01 19:14

In article <IN6m7.7681$sk1.215368@news010.worldonline.dk>, "Niels
Andersen" <niels-usenet@myplace.dk> wrote:

> Hvis sitet er på samme maskine som databasen, så ja.
>
> Med PHP:
>
> <?
> $sql = file('dinfil.sql');
> foreach($sql AS $line) {
> mysql_query($line);
> }
> ?>

Det er nu ikke nogen særligt god løsning, idet du antager at der er en
SQL-sætning pr. linje, hvilket ofte er fejlagtigt.

/A

Niels Andersen (07-09-2001)
Kommentar
Fra : Niels Andersen


Dato : 07-09-01 21:12

"Anders Johannsen" <anders@ignition.dk> wrote in message
news:pan.2001.09.07.20.13.53.42.9171@ignition.dk...
> In article <IN6m7.7681$sk1.215368@news010.worldonline.dk>, "Niels
> Andersen" <niels-usenet@myplace.dk> wrote:
>
> > Hvis sitet er på samme maskine som databasen, så ja.
> >
> > Med PHP:
> >
> > <?
> > $sql = file('dinfil.sql');
> > foreach($sql AS $line) {
> > mysql_query($line);
> > }
> > ?>
>
> Det er nu ikke nogen særligt god løsning, idet du antager at der er en
> SQL-sætning pr. linje, hvilket ofte er fejlagtigt.

Arh ja, det har du da ret i. :)
Men det var nu mest princippet i det jeg ville vise. Hent det ind i en
variabel, og fyr det afsted.

Mon ikke denne virker uden problemer:
$sql = join("\n", file('dinfil.sql'));
mysql_query($sql);

--
Mvh.

Niels Andersen



Anders Johannsen (07-09-2001)
Kommentar
Fra : Anders Johannsen


Dato : 07-09-01 22:30

In article <bS9m7.7722$sk1.222405@news010.worldonline.dk>, "Niels
Andersen" <niels-usenet@myplace.dk> wrote:

> Arh ja, det har du da ret i. :)
> Men det var nu mest princippet i det jeg ville vise. Hent det ind i en
> variabel, og fyr det afsted.
>
> Mon ikke denne virker uden problemer: $sql = join("\n",
> file('dinfil.sql')); mysql_query($sql);

Ikke for at være pedantisk, men jeg tror at mysql_query() forventer netop
et SQL statement af gangen

Dvs. noget i retning af (utestet):

<?php
$filename = "test.sql";
foreach (explode(";", fread(fopen($filename, r), filesize($filename))) as $line)
   mysql_query($line);
?>

En mere generisk løsning ville tage højde for kommentarer mv.

/A

Nezar Nielsen (08-09-2001)
Kommentar
Fra : Nezar Nielsen


Dato : 08-09-01 03:52

"Anders Johannsen" <anders@ignition.dk> wrote in message
news:pan.2001.09.07.23.29.39.933.9171@ignition.dk...

> Dvs. noget i retning af (utestet):
>
> <?php
> $filename = "test.sql";
> foreach (explode(";", fread(fopen($filename, r), filesize($filename))) as
$line)
> mysql_query($line);
> ?>

ja, jeg ved godt jeg er dybt pedantisk nu, men:

insert into blab(blib,blub) values ('blaah; sagde han', 'blung');

:)

--
Mvh. Nezar Nielsen
http://fez.dk/




Andreas Frøsting (07-09-2001)
Kommentar
Fra : Andreas Frøsting


Dato : 07-09-01 18:13

>Jeg skal tilgå MySQL serveren via localhost, så scriptet/SQL'en skal vel
>udføres fra websitet?!?

Med mindre du har mulighed for at telnette/SSH'e til boxen.
Så er det bare at køre:

mysql -ubrugernavn -ppassword databasenavn < sqldump.sql

--
Andreas Frøsting
http://phpwizard.dk
glaf glaf glaf!

Niels Andersen (07-09-2001)
Kommentar
Fra : Niels Andersen


Dato : 07-09-01 18:28

"Andreas Frøsting" <smoelf@phpwizard.dk> wrote in message
news:avvhptgggffp3sulf676octn674kohllvl@4ax.com...
> Med mindre du har mulighed for at telnette/SSH'e til boxen.
> Så er det bare at køre:

Du mener vel "Hvis du har..." :)

--
Mvh.

Niels Andersen



Christian Joergensen (09-09-2001)
Kommentar
Fra : Christian Joergensen


Dato : 09-09-01 12:02

Andreas Frøsting <smoelf@phpwizard.dk> wrote:

>>Jeg skal tilgå MySQL serveren via localhost, så scriptet/SQL'en skal vel
>>udføres fra websitet?!?

> Med mindre du har mulighed for at telnette/SSH'e til boxen.
> Så er det bare at køre:

> mysql -ubrugernavn -ppassword databasenavn < sqldump.sql

Eller smide en -h parameter på og køre det fra din egen box:

mysql -ubrugernavn -ppassword -hhostname databasenavn < sqldump.sql

--
Christian Jørgensen / Recursivity. Call back if it happens again.
http://www.razor.dk /



Niels Andersen (09-09-2001)
Kommentar
Fra : Niels Andersen


Dato : 09-09-01 12:05

"Christian Joergensen" <mail@phpguru.dk> wrote in message
news:2152395.44XZpnrlXX@flaf...
> > Med mindre du har mulighed for at telnette/SSH'e til boxen.
> > Så er det bare at køre:

> Eller smide en -h parameter på og køre det fra din egen box:

Kan ikke lade sig gøre i dette tilfælle.
"Jeg skal tilgå MySQL serveren via localhost"

--
Mvh.

Niels Andersen



Christian Joergensen (09-09-2001)
Kommentar
Fra : Christian Joergensen


Dato : 09-09-01 16:14

Niels Andersen <niels-usenet@myplace.dk> wrote:

>>> Med mindre du har mulighed for at telnette/SSH'e til boxen.
>>> Så er det bare at køre:

>> Eller smide en -h parameter på og køre det fra din egen box:

> "Jeg skal tilgå MySQL serveren via localhost"

*hovsa* ...

--
Christian Jørgensen / Server depressed, needs Prozak
http://www.razor.dk /


Thor Dreier (07-09-2001)
Kommentar
Fra : Thor Dreier


Dato : 07-09-01 17:58

"Carsten Madsen" <carstensm@hotmail.com> wrote in message
news:3b98f146$0$3241$ba624c82@nntp01.dk.telia.net...
> Jeg vil gerne udføre noget SQL på mange linier der ligger i en fil.
Hvordan
> kan jeg sende det til MySQL - har ikke adgang til phpMyAdmin som har
> genereret filen?

Hvis du har et webhotel med php, så kan du da bare smække phpMyAdmin ind
selv.



Carsten Madsen (07-09-2001)
Kommentar
Fra : Carsten Madsen


Dato : 07-09-01 19:06

> Hvis du har et webhotel med php, så kan du da bare smække phpMyAdmin ind
> selv.

Der kan man bare se - det gør jo det hele lidt nemmere.

Løsningen med :
<?
$sql = file('dinfil.sql');
foreach($sql AS $line) {
mysql_query($line);
}
?>
virkede også fint, men kræver en del redigering af .sql filen for at alle
SQL forespørgelser ligger på een linie og der ikke er ";" efter sætningerne.

Mange tak for svarene

Carsten



Per Thomsen (09-09-2001)
Kommentar
Fra : Per Thomsen


Dato : 09-09-01 16:59


"Carsten Madsen" <carstensm@hotmail.com> skrev i en meddelelse
news:3b98f146$0$3241$ba624c82@nntp01.dk.telia.net...
> Jeg vil gerne udføre noget SQL på mange linier der ligger i en fil.
Hvordan
> kan jeg sende det til MySQL - har ikke adgang til phpMyAdmin som har
> genereret filen?

Tag et kig på:
http://www.mysql.com/doc/L/O/LOAD_DATA.html

Det er måske noget i den stil du leder efter.

MVH Per Thomsen,
http://www.pert.dk/


Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste