Rune1983 Guru
21. marts 2019 - 08:41 Der er 4 kommentarer og
2 løsninger

Import af SQL fil. Ønsker kun insert data.

Jeg sidder og bøvler lidt med kun at importere data fra en SQL dump file.
Vil gerne undlade alt undtagen insert data.

Pt anvender jeg følgende i et PHP script som fungere perfakt.

$command='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' < ' .$mysqlImportFilename;

$output=array();

exec($command,$output,$worked);

switch($worked){
case 0:
    echo 'Import file ' .$mysqlImportFilename;
    echo 'Successfully imported to database ' .$mysqlDatabaseName;
    break;
case 1:
    echo 'THERE WAS AN ERROR DURING IMPORT.';
    break;
}

Er det muligt at ligge noget kode ind i import strengen som undlader alle de forespørgsler med Create table, Dropd table if EXIST, Create Trigger etc. Ønsker som sagt kun Insert forespørgsler.

Eller er det bedre at lave 2 dumbs af database. En med structure og en med data. Så man derved kan skille dem fra hinanden.
21. marts 2019 - 09:38 #1
du ønsker noget data ?
så er det nemmeste jo SELECT * FROM tabel.navn WHERE ?????
og herefter INSERT dette i den nye database
Rune1983 Guru
21. marts 2019 - 09:44 #2
I SQL dumb filen er der fx.

DROP TABLE IF EXISTS ...
CREATE TABLE ...
INSERT INTO ...
CREATE TRIGGER ...

Jeg ønsker kun INSERT INTO ... udført i import kaldet.
arne_v Ekspert
21. marts 2019 - 13:34 #3
Mit forslag er at holde opgaverne adskilt.

Saa:

A.php konverterer foobar_original.sql til foobar_new.sql hvor alt andet end INSERT er fjernet

B.php loader foobar_new.sql
Rune1983 Guru
21. marts 2019 - 14:00 #4
Det vil jeg arbejde hen imod Arne. Dog kunne det være rart hvis man bare kunne fortælle import kaldet at den skulle udføre Insert data.
Tror jeg vil prøve at arbejde hen mod at splitte Dump filen i 2 med Data og Struktur.
Jens U. Juniormester
21. marts 2019 - 21:55 #5
Din kommando, der indlæser sammensættes som en streng:

$command='mysql -h' .$mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName .' < ' .$mysqlImportFilename;

Som bliver til en kommando a'la:

mysql -h <hostnavn> -u <brugernavn> -p<password> <databasenavn> < dump.sql

Kan vi antage at du kører kommandoen på en maskine, der har grep installeret, kunne kommandoen istedet være:
grep "INSERT INTO" dump.sql | mysql -h <hostnavn> -u <brugernavn> -p<password> <databasenavn>

hvilket kun vil sende linier indeholdende INSERT INTO til mysql, og det vil svare til at dine første PHP-linie skal omskrives til noget a'la

$command='grep "INSERT INTO" dump.sql | ' . $mysqlHostName .' -u' .$mysqlUserName .' -p' .$mysqlPassword .' ' .$mysqlDatabaseName;

Du kan alternativt bede mysqldump nøjes med at lave INSERT INTO statements med noget a'la:
mysqldump -h <hostnavn> -u <brugernavn> -p<password> --no-create-info --no-create-db --skip-triggers <databasenavn> > dump.sql
Rune1983 Guru
22. marts 2019 - 07:07 #6
Hej Jens U.
Det ser spændende ud. Vil jeg lige prøve at kigge nærmere på.
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Tirsdag kårer Microsoft de bedste partnere i Danmark: Proactive og Delegate fører feltet an med flest nomineringer
Landets ypperste Microsoft-partnere bliver tirsdag hædret af Microsofts danske ledelse. 20 virksomheder har fået en indbydelse til det prestigefyldte arrangement. Her er et overblik over, hvem der er blevet nomineret.
Computerworld
Biden sender skjult besked til kode-folket: "Hvis du læser dette, har vi brug for din hjælp”
En stående invitation er blevet opdaget i kildekoden på Det Hvide Hus' hjemmeside. Men den er kun til de eksperter, der selv kan finde den.
CIO
Podcast: Her er seks gode råd om ledelse og digitalisering fra danske top-CIO'er
The Digital Edge: Vi har talt med 17 af Danmarks dygtigste digitale ledere - og samlet deres seks bedste råd om digitalisering og ledelse. Få alle rådene på 26 minutter i denne episode af podcasten The Digital Edge.
White paper
Fri medarbejdermobilitet - med digital bodyguard
Om at gå fra adgangsstyring på personniveau til adgangsstyring på desktopniveau. I takt med at flere og flere medarbejdere arbejder remote og logger på jeres systemer og netværk uden for virksomhedens sikkerhedsværn, risikerer de at efterlade døren til forretningen på klem. Dermed bliver endpoints som pc’ere, Mac’s og servere et oplagt mål for hackere, som vil ind i virksomhedens infrastruktur. I blandt sker det også, at medarbejdere udnytter deres privilegerede adgangsrettigheder til skadelige formål. Det er derfor mere aktuelt end nogensinde at rette opmærksomheden mod jeres endpoints og de rettigheder, der ligger her.