Hvordan eksportere data til mysql. Vi dumper MySQL-databasen og eksporterer data til konsollen. Importere SQL-filer til MySQL-databaser ved hjelp av phpMyAdmin

Jeg blir ofte spurt om hvordan man importerer en stor database til serveren MySQL-data. Det er kjent at phpMyAdmin som standard har begrensninger på størrelsen på den importerte databasen.

Hvis dumpen din ikke er mye større enn den akseptable grensen, kan du dele den opp i flere deler og importere den i flere omganger. Dette er berettiget hvis for eksempel grensen er 2 MB, og databasen din er 5-10 MB stor. Det er klart at å "kutte" en 100 MB database i 50 deler er en ganske arbeidskrevende og tidkrevende prosess.

Det er flere alternativer for å løse dette problemet.

Redigering av webserverkonfigurasjonen

På VDS/VPS er det ingen spesielle problemer med dette, du trenger bare å korrigere konfigurasjonen. Øk nemlig de tillatte maksimalverdiene for filer lastet opp til serveren i php.ini, maksimal størrelse for filer overført med POST-metoden:

Post_max_size = 2000M upload_max_filesize = 2000M

I tillegg, hvis databasen din er veldig stor, bør du øke den maksimalt tillatte skriptkjøringstiden.

Max_execution_time = 32000 max_input_time = 32000

Og bare i tilfelle, kan du øke størrelsen på den tillatte mengden RAM:

Memory_limit = 512M

Etter å ha gjort endringer, sørg for å starte webserveren på nytt.

Det er klart at denne metoden ikke er egnet for virtuell hosting, fordi... det innebærer ikke muligheten til å redigere konfigurasjoner.

Sypex dumper

Du kan bruke tredjepartsprogramvare. Og den første applikasjonen det er verdt å ta hensyn til er Sypex Dumper.

Etter å ha brukt den for første gang for mange år siden og setter pris på alle dens muligheter og fordeler, kan jeg trygt merke den som "må ha". Sypex dumper - serverapplikasjon i PHP som ikke krever installasjon. Det er nok å kopiere det, for eksempel til roten av nettstedet ditt i sxd-katalogen og kalle det i nettleseren: http://Your_Site/sxd/. Det er verdt å merke seg at du først bør plassere en dump av databasen i sikkerhetskopikatalogen. Etter initialisering av skriptet vil du se autorisasjonspanelet for tilkobling til databasen. Skriv inn brukernavn og passord. Vert og port er valgfritt bare hvis de er spesifikke.

Etter autorisasjon kan du gå direkte til import av databasen. I felt "Database" databasen du er koblet til vil bli valgt, og i feltet "Fil" du vil se dumpen du tidligere lastet opp til Backup-katalogen.

For de fleste tilfeller ingen tilleggsinnstillinger er ikke lenger nødvendig, og du kan trygt starte importen ved å klikke på "Kjør"-knappen. Import, avhengig av størrelsen på databasen og Internett-tilkoblingshastigheten, kan ta litt tid. Under import kan du se hvilke tabeller som importeres til dette øyeblikket til databasen. Når skriptet er fullført, vil du se utførelsesloggen. Det ser omtrent slik ut:

Det er alt, faktisk - databasen er importert!

Konsoll

Vi vil ikke vurdere å importere gjennom konsollen. Jeg tror folk som bruker konsollen uten meg vet hvordan de importerer en database. EN vanlige brukere Det er bedre å ikke gå dit uten spesiell opplæring. Siden utføring av noen kommandoer kan føre til alvorlige konsekvenser, inkludert fullstendig krasj av serveren.

Endelig

Jeg antar ikke å si at Sydex Dumper er den eneste og riktige løsningen. Det er andre mer elegante metoder som krever at brukeren har viss kunnskap og passende tilgang til serverinnstillingene.

Men i et delt vertsmiljø vil Sydex Dumper absolutt være din uunnværlige assistent.

Abonner på mitt telegram og bli den første til å motta nytt materiale, inkludert de som ikke er på siden.

Denne leksjonen tar for seg viktige problemstillinger som f.eks database eksport Og database import MySQL. Du kan spørre, hvorfor eksportere databaser i det hele tatt? Som regel gjøres dette med det formål å sikkerhetskopiere databasen, slik at den alltid er for hånden, som man sier, for sikkerhets skyld. Tross alt er ingen immun mot force majeure-omstendigheter, for eksempel hosting-ulykker, som kan føre til tap av data. Et annet eksempel kan være et angrep fra hackere som ønsker å skade nettstedet ditt. Faktisk kan det være mange slike eksempler.

Databaseimport brukes når du trenger å "laste opp" en database på nytt til din nåværende hosting, eller når du flytter til en annen hosting. Dette gjøres også ofte i praksis av webansvarlige.

På egen hånd database eksport Og database import– oppgavene er enkle. Det er verdt å utføre disse handlingene én gang for å huske algoritmen for implementeringen for resten av livet. La oss se på hvordan alt dette gjøres med eksempler.

For å eksportere en database, må du gå til vertsadministrasjonspanelet og deretter gå til databasedelen - MySQL-databaser.

Velg databasen du vil eksportere (gå til phpMyAdmin). I i dette eksemplet databasen heter "cl209038".

1) I det første tilfellet, velg "Rask", la formatet være SQL og trykk på "OK"-knappen. Som et resultat vil en kopi av databasen lastes ned til datamaskinen vår.

2) I det andre tilfellet, velg "Normal". En side med databaseeksportinnstillinger vises. Velg alle tabellene, velg kodings- og komprimeringsnivå, som vist nedenfor. Resten trenger som regel ikke å endres. Klikk på "OK"-knappen og databasen eksporteres til datamaskinen vår.

Det er alt, som du kan se, database eksport MySQL er ikke en vanskelig oppgave.

For å importere en database, må du også gå til vertsadministrasjonspanelet og gå til delen med MySQL-databaser. Det er to alternativer her - enten må du opprette en ny database, eller eksportere til en eksisterende.

Oppretting av en database vil være nødvendig, for eksempel hvis vi flytter siden til en annen hosting. Hvis vi fortsatt har samme hosting og databasen allerede er opprettet, kan du ganske enkelt velge denne databasen og "laste opp" dataene til den på nytt. Du kan selvfølgelig slette den, deretter opprette en ny (tom) og laste opp til den.

1) Databasen eksisterer allerede. Vi velger en database å importere vår kopi av databasen til. Databaseimportmenyen vises.

Velg databasekopifilen du vil importere. Om nødvendig kan du endre kodingen og formatet til databasen. Klikk deretter på "OK"-knappen. Etter import vil systemet informere oss om alt gikk som det skulle eller om det har oppstått feil under prosessen. Hvis det oppstår feil, kan du prøve å slette databasen på hostingen, deretter opprette en tom database og importere databasen på nytt.

2) Oppretting av ny database. Gå til vertsadministrasjonspanelet og velg delen med MySQL-databaser. Vi kommer inn på MySQL-databasebehandling.

Angi ønsket databasenavn og passord for den. Klikk på "Opprett"-knappen. Som et resultat bør en ny (tom) database opprettes - inn i den må vi importere en tidligere lagret kopi av databasen vår.

Det er alt jeg ville fortelle deg om eksport og import av MySQL-databaser. Hvis du har noen problemer med disse spørsmålene, skriv kommentarer til denne leksjonen.

I denne artikkelen vil vi vurdere to spørsmål - hvordan du kan importere databaser og hvordan du løser problemet med å importere store databaser ved å endre innstillingene i php.ini.

Som du vet, er sikkerhetskopiering av data en garanti for at du vil være i stand til å gjenopprette nettstedet ditt hvis det plutselig, av en eller annen grunn, blir forstyrret i driften av nettstedet. Hvordan gjenopprette et nettsted fra en sikkerhetskopi? Det er flere måter, vi vil se på hvordan du kan importere en mysql-database til phpMyAdmin. Før du starter databaseimportprosessen, må du slette alle tabeller fra databasen du skal importere filer til.

For å slette tabeller, logg inn på hjemmeside phpMyAdmin og gjør følgende:


2 - klikk Merk alle;
3 - velg Slett fra rullegardinmenyen og klikk OK,

Nå kan du begynne å importere mysql-databasen. For å gjøre dette, følg disse trinnene:

1 - velg ønsket database;
2 - åpne kategorien Importer til toppmenyen;
3 - finn gjennom Bla gjennom sikkerhetskopi med databasen og klikk OK.

Hvis du gjorde alt riktig, vil en melding som indikerer at importen var vellykket vises i phpMyAdmin-vinduet.

Importerer store mysql-databaser

Webmastere støter ofte på problemet med å importere store mysql-databaser. Problemet skyldes det faktum at i PHPMyAdmin er nedlasting av en databasedump begrenset av størrelsen på den opplastede filen, som som standard ikke bør overstige 2MB (2048 KB). Når du prøver å laste ned en dump av en stor database, vises en feilmelding: "Den nedlastede filstørrelsen er sannsynligvis for stor..." osv.

La oss se på én måte å importere en dump av en stor database. Grensen for importfilstørrelse bestemmes av PHP-konfigurasjonen. PHP-konfigurasjonsinnstillinger er spesifisert i php.ini-filen. Dette betyr at for å importere store databaser, må vi endre den maksimale størrelsen på opplastede filer i php.ini-konfigurasjonsfilen.

Hvor ligger php.ini-filen? Du kan beregne banen til php.ini-filen som følger:

  • Lag en info.php-fil og legg inn følgende kode i den;
  • Last opp den opprettede filen til rotmappen på nettstedet (www, public_html);
  • I adressefeltet nettleser, skriv inn adressen http://din_side/info.php;
  • I vinduet som åpnes finner du Loaded Configuration File, hvor banen til filen vil bli indikert;

For å importere en stor mysql-database, må du endre php.ini-direktivene i PHPMyAdmin.

Php.ini-filen er funnet, nå gjenstår det bare å redigere den, eller rettere sagt, endre flere direktiver i filen som vist nedenfor:

Maksimal tid (sek) for å laste skriptet fullstendig:
max_execution_time = 60
Den maksimale tiden (sekunder) som er spesifisert for skriptet for å motta alle data:
max_input_time = 90
Maksimal mengde minne som skriptet har tillatelse til å bruke:
minnegrense = 128M
Maksimal tillatt størrelse på opplastede filer:
upload_max_filesize = 200M
Maksimal størrelse på overførte data som PHP godtar:
post_max_size = 180M

Ved å endre de ovennevnte direktivene i php.ini, kunne vi importere via PHPMyAdmin database datavolum opp til 180 M.

For å importere en databasedump kan du også bruke gratis versjon Sypex Dumper-programmer. Dumperen er optimalisert for topphastighet arbeid, samt arbeid med databaser på ca 800 megabyte.

Når du overfører et nettsted fra en lokal server til hosting, er en av de obligatoriske prosedyrene eksport/import av databasen. Derfor vil jeg i denne artikkelen prøve å beskrive så mye detaljert som mulig prosessen med å eksportere og importere en database fra en lokal server, det vil si fra webgrensesnittet PHPMyAdmin versjon 3.2.3 for hosting.

Det første du må gjøre er å løpe lokal server, i dette tilfellet er det Denwer. Etter å ha startet Denwer, må du åpne nettleseren din og gå inn på nettleserlinjen: "http://localhost/tools/phpmyadmin", hvoretter et vindu åpnes foran deg(Figur 1)med tidligere opprettet databaser.

Figur 1

Deretter må vi velge databasen som vi skal eksportere, i mitt tilfelle er det en database som heter Mybd. Du kan velge en database ved å klikke på den på venstre side av nettleservinduet, der det står "Vennligst velg en database" (fig. 2).


Fig.2

Etter å ha valgt ønsket database, åpnes et vindu med databasestrukturen. Det er et element i toppmenyen "Eksport" ved hjelp av dette vil vi eksportere databasen til en datamaskin og deretter importere den til hostingen. Og så, gå til "Eksporter" -elementet (Fig.3).


Fig.3

I vinduet som åpnes må du gjøre noen målinger (Fig.4), nemlig: i "Eksporter"-blokken må du velge alle databasetabeller ved å klikke på elementet "Velg alle" og merk av i boksen ved siden av elementet SQL, er dette elementet ansvarlig for filtypen som skal eksporteres. Du må også merke av i boksen ved siden av "Lagre som fil", som vil sikre at databasen er lagret i en fil. Det er ikke nødvendig å endre noen andre innstillinger, bare trykk på knappen "Gå".

Fig.4

Nå, hvis du gjorde alt riktig, bør databasefilen lastes ned til datamaskinen din. Ved å bruke denne filen vil vi importere databasen til hostingen.

Du må også endre filkodingen til UTF-8 uten BOM, for å endre kodingen jeg bruker tekstredigerer Notisblokk++(Nedlasting ) . Ved å bruke dette programmet åpner du databasefilen og i menyen "Koding" velge "Konverter til UTF-8 uten stykkliste" (fig. 5), lagre og lukk.


Fig.5

God dag, kollegaer :)

I dag vil jeg fortsette å introdusere deg til å jobbe med MySQL i konsollen og MySQL-kommandolinjen.

Jeg har allerede skrevet artikler om hvordan du utfører grunnleggende handlinger med MySQL-data via konsollen og tar sikkerhetskopier MySQL-databaser, samt eksport av informasjon som er lagret i den.

Den logiske fortsettelsen av denne historien vil være gjenoppretting av databasen og informasjonen som er lagret i den ved hjelp av MySQL-databaseimportoperasjoner. Og viktigst av alt, vi vil fortsette å gjøre dette ved å bruke verktøyet til alle ekte utviklere – gjennom konsollen.

Hvis du trenger instruksjoner for å importere en database via phpMyAdmin, så finner du det i artikkelen om. I den nåværende artikkelen er jeg ikke ivrig etter å beskrive den igjen, spesielt siden dagens materiale utelukkende vil bli viet til å importere MySQL-databasen gjennom konsollen.

Men før vi begynner å gjennomgå metoder og verktøy, noen ord om hva import av en MySQL-database er, hvordan det er og hvordan det best gjøres?

Importere en MySQL-database: hva og hvorfor?

Import av en MySQL-database er en operasjon som fyller databasen med informasjon. I dette tilfellet er datakilden en dumpfil - et øyeblikksbilde av en annen database, opprettet automatisk under eksportoperasjonen, eller et spesielt forberedt SQL-skript.

Import, samt eksport av MySQL-databasen, er det to typer informasjon som er lagret i databasen:

  1. strukturen til databasen, dens tabeller og dataene som er lagret i dem (ofte kalt en databasedump);
  2. ganske enkelt data lagret i en tabell eller samlet inn ved hjelp av PLUKKE UT forespørsler.

Denne artikkelen vil diskutere begge alternativene.

For å gjenopprette en MySQL-database med dens struktur og all lagret informasjon fra en dump, som allerede nevnt, trenger du en databasedumpfil, som er en tekstfil med en hvilken som helst utvidelse (kan forhåndspakkes inn i et arkiv for å redusere størrelsen) som inneholder SQL-kommandoerå lage selve databasen og tabeller, samt fylle dem med informasjon.

Derfor, for å gjenopprette en MySQL-database fra en dump, må du utføre kommandoene i filen.

For vanlig datagjenoppretting er slike komplikasjoner ikke nødvendige. Det er nok å ha en testfil tilgjengelig, hvor informasjonen vil være strukturert på samme måte som i databasetabellen: antall kolonner med informasjon tilsvarer antall tabellpostattributter.

For disse formålene vil en vanlig txt-fil være egnet, dataene som vil bli separert, eller filer opprettet i spesielle regnearkredigerere ( Microsoft Office Excel, OpenOffice, etc.) med en utmerket utvidelse: xls, csv, odt, etc.

Disse formatene er til og med å foretrekke, fordi Når du oppretter dem, legges dataskilletegn automatisk til av redaktører, og det er ikke nødvendig å angi dem separat, som i tilfellet med en vanlig tekstfil.

Legge til data til MySQL: Verktøy

Når det gjelder verktøyene for å importere en MySQL-database, kan jeg si at det i dag er tre av dem.

Jeg vil liste dem, fra det laveste nivået og slutter med det høyeste nivået (fra synspunktet om å bruke alle slags skjell og tillegg):

  1. Serverkonsoll og MySQL-kommandolinje;
  2. Skript skrevet på programmeringsspråk som lar deg registrere data i MySQL ved hjelp av språkverktøy;
  3. Ferdige programmer som gir et visuelt grensesnitt for arbeid med databasen (samme phpMyAdmin, MySQL WorkBench, MySQL Manager, etc.).

Jeg tror at rekkefølgen på verktøyene ikke vil reise noen spørsmål for noen, fordi... Programmeringsspråkverktøy fungerer som regel på grunnlag av MySQL-konsollkommandoer, og programmer er basert på skript eller jobber direkte med MySQL fra kommandolinjen.

På en eller annen måte er konsollen i forkant av alt, og de gjenværende verktøyene er faktisk emulatorene.

Derfor, ved å bruke konsollen når du importerer data til MySQL kan du omgå ulike typer begrensninger satt av innstillingene til programmeringsspråk på Internett server og programmene i seg selv (som for øvrig ikke alltid kan endres).

På grunn av dette kan du ikke bare laste en MySQL-database gjennom konsollen raskere, men også gjøre denne operasjonen mulig i prinsippet, fordi Skript og programmer har en tendens til å avbryte importen når maksimal skriptutførelsestid er nådd eller ikke starter i det hele tatt på grunn av størrelsen på den nedlastede filen.

Jeg tror alle som noen gang har prøvd å laste opp en stor dump til en MySQL-database via phpMyAdmin forstår hva jeg snakker om.

Ofte er disse grensene årsaken til feil ved import av en MySQL-database, som du aldri vil se når du bruker konsollen.

De er selvfølgelig ikke konstante, og de kan endres, men dette er en ekstra hodepine, som forresten kanskje ikke kan løses for vanlige brukere.

Jeg håper at jeg har motivert deg til å importere MySQL-databasen via konsollen (både strukturen og individuelle data).

Og på dette positive notatet går vi videre til den etterlengtede praksisen og vurderer metoder og kommandoer for konsolloverføring av data til databasen.

Hvordan gjenopprette en MySQL-database fra en dump via konsollen?

Så, for å distribuere en MySQL-dump fra konsollen, er det to måter:

  1. ved å bruke kommandoen i kommandolinje MySQL;
  2. i selve serverkonsollen.

La oss starte i rekkefølge.

Så, for å importere en MySQL-databasedump til en eksisterende lagring via , må vi først starte den og velge ønsket database som vi skal laste opp dumpen vår til.

Gjennomføringen av disse handlingene er beskrevet i detalj i artikkelen koblet til ovenfor, så hvis du trenger en beskrivelse av dem, ta dem derfra, fordi Jeg vil ikke duplisere dem for andre runde.

Etter at du har gjort det ovenfor, skriv inn følgende kommando i MySQL Shell:

Kildebane_og_dump_filnavn;

Alt som gjenstår for oss er å studere meldingene i konsollen om fremdriften til operasjonene i dumpen.

Uten først å bytte til ønsket database, etter tilkobling til MySQL-serveren i konsollen, kan dumpen importeres med følgende kommando:

Mysql -u brukernavn -p databasenavn< путь_и_имя_файла_дампа

Det er alt. Det viktigste er å vente til importen er ferdig hvis filen er veldig stor. Fullføringen av dumpen kan bedømmes etter når serverkonsollen er tilgjengelig igjen.

Faktisk er dette ulempen denne metoden sammenlignet med den forrige, fordi i den første er det mulig å overvåke operasjonene som utføres på databasen under import, men i den andre er det ikke.

Hvis dumpfilen er pakket inn i et arkiv, må den pakkes ut samtidig når den lastes ned.

På Linux kan dette gjøres slik:

Gunzip > [archive_file_name.sql.gz] | mysql -u -s

I Windows standard Det er ikke noe verktøy for å pakke ut arkivet i konsollen, så det må installeres i tillegg.

Som du kan se, er import av en MySQL-dump via konsollen en veldig enkel operasjon, som utføres med én kommando. Så du trenger ikke være utvikler for å utføre denne prosedyren.

Hvis du plutselig ikke vet hvordan du starter serverkonsollen, kan du finne denne informasjonen i artikkelen om MySQL-kommandolinjen, lenken som jeg allerede har lagt ut tidligere.

Ved å bruke de beskrevne metodene er det forresten også mulig å importere en MySQL-tabell, og ikke hele databasen. I dette tilfellet må dumpen du laster opp inneholde operasjonene for å opprette den og fylle den med data.

Laste data inn i en MySQL-database fra en fil i konsollen

Vi snakket om å gjenopprette en MySQL-database fra en dump i konsollen. Nå er tiden inne for å finne ut hvordan du kan importere data fra filer, inkludert xls og csv, til en MySQL-database på samme måte.

For denne oppgaven har vi igjen de samme to verktøyene som i forrige tilfelle: MySQL-kommandolinjen og serverkonsollen.

La oss starte anmeldelsen i rekkefølge igjen.

Så for å importere en fil i MySQL-kommandolinjen, kjører vi den på nytt og går til databasen som dataene skal lastes inn i.

LAST DATAINFIL "path_and_name_of_dump_file" INTO TABLE `database_table` KOLONNER AVSLUTTET AV "," OMKLUTTET AV "\"" LINJER AVSLUTTET AV "\n";

Ikke glem det hvis MySQL-serveren ble startet med alternativet --sikker-fil-priv(som ofte skjer når bruker MySQL distribusjoner inkludert i WAMP/MAMP-sammenstillinger), må filnavnet spesifiseres under hensyntagen til systemvariabelen secure_file_priv.

For å importere en MySQL-database til serverkonsollen uten å gå inn i MySQL Shell, trenger vi verktøyet mysqlimport, inkludert i MySQL-distribusjonen, og dens følgende kall:

mysqlimport –u brukernavn –p databasenavn navn_og_sti_til_import_fil

Dette verktøyet er analog med SQL-kommandoen LAST DATAINFIL, kun for kommandolinje. Men spørsmålet oppstår, hvorfor, blant parametrene for samtalen, er ikke tabellen som dataene fra filen skal lastes inn i?

Faktum er at mysqlimport rett og slett ikke fysisk har denne parameteren. I stedet må navnet på tabellen som dataene skal lastes inn i, vises i navnet på den importerte filen.

De. hvis du vil importere fra Excel-tabeller til MySQL-tabellen brukere, så skal filen din kalles users.xls.

Utvidelsen til den importerte filen, som allerede nevnt, kan være hva som helst.

Med mysqlimport kan du også laste ned flere xls-filer eller csv i MySQL. For at dataene skal nå målet, må navnene på filene og databasetabellene, som i forrige eksempel, også samsvare.

Hvis plutselig kolonnene i den importerte filen ikke er i samme rekkefølge som kolonnene i databasetabellen, må du bruke alternativet —kolonner i følgende form for å avklare rekkefølgen:

Mysqlimport –u brukernavn –p databasenavn --kolonner kolonne1, kolonne2, ... navn_og_sti_til_import_fil

Naturligvis vurderte jeg ikke i eksemplene mine full liste mysqlimport parametere, fordi noen av dem er svært spesifikke og brukes ekstremt sjelden i praksis.

Hvis du vil gjøre deg kjent med dem, er deres fullstendige liste tilgjengelig her - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html

Funksjoner for å laste data inn i en MySQL-database fra en dump

Hvis du vil at prosessen med å importere en stor MySQL-database skal gå raskere, må du lage en databasedump ved å bruke spesielle alternativer mysqldump-kommandoene, som jeg skrev om i min forrige artikkel om eksport av MySQL-databasen, lenken som jeg postet i teksten tidligere.

Dessverre har ikke MySQL-databaseimportkommandoene i seg selv slike alternativer.

Det eneste er at for å øke hastigheten når du laster en stor databasedump, kan du bruke følgende funksjon.

1. Åpne dumpfilen (helst i filbehandlere, fordi vanlige redaktører kan ganske enkelt bli overveldet av store filer).

2. Skriv følgende linjer i begynnelsen av filen:

SET fremmed_nøkkel_sjekker = 0; SET UNIQUE_CHECKS = 0; SET AUTOCOMMIT = 0;

Merk! De kan allerede være der eller kommentert (mange programmer som lager dumper kan legge dem til automatisk)

3. På slutten av filen skriver vi de omvendte handlingene:

SET fremmed_nøkkel_sjekker = 1; SET UNIQUE_CHECKS = 1; SET AUTOCOMMIT = 1;

Forresten, disse kommandoene vil ikke bare bidra til å fremskynde importprosessen, men også gjøre det mulig.

Faktum er at hvis du noen gang har sett på dumpfilen for å importere en MySQL-database, har du kanskje lagt merke til at operasjonen med å sette strukturen til de lastede tabellene ser slik ut:

SLIP TABELL HVIS FINNES `klienter`; LAG TABELL `klienter` (...);

De. det søkes i databasen etter en tabell med samme navn som den som importeres, og hvis en blir funnet, slettes den og opprettes på nytt.

Og hvis plutselig en eksisterende tabell er koblet med fremmednøkler til andre, vil hele lastingen mislykkes.

Derfor er deaktivering av sjekken for eksistensen av fremmednøkler og andre også en utmerket garanti for vellykket gjennomføring av MySQL-databaseimportprosessen.

Funksjoner ved å importere csv til MySQL-database og andre filer

Når du laster data inn i en MySQL-database fra tekstfiler Du må kanskje også deaktivere fremmednøkler.

Dessuten, i motsetning til den forrige situasjonen, vil det i dette tilfellet ikke være mulig å skrive direktiver inn i filen, fordi SQL-kommandoer i den vil ikke bli akseptert og utført.

I en tidligere artikkel om eksport av en MySQL-database, nevnte jeg allerede hvordan du gjør dette ved å bruke følgende operasjon på MySQL-kommandolinjen:

SET FOREIGN_KEY_CHECKS=0;

Jeg nevnte imidlertid ikke at MySQL-systemvariabelen FOREIGN_KEY_CHECKS har to betydninger: global og sesjonell (for gjeldende økt).

Den globale verdien til MySQL-variabler er gyldig for enhver handling på MySQL-serveren til den startes på nytt. Deretter vil verdiene til variablene bli tilbakestilt og de vil bli tildelt standardverdier.

Sesjonsverdien til MySQL-systemvariabelen angis kun for varigheten av brukerens økt med MySQL-serveren. En økt eller økt begynner når en klient kobler seg til serveren, da den blir tildelt en unik tilkoblings-ID, og slutter når den kobles fra serveren, noe som kan skje når som helst (for eksempel på grunn av et tidsavbrudd).

Hvorfor bestemte jeg meg for å huske dette?

Fordi når jeg utførte kommandoer for å laste en fil inn i en MySQL-database gjennom serverkonsollen, uten å gå inn i MySQL Shell, oppdaget jeg at deaktivering av fremmednøkkelkontroll ved å bruke den tidligere beskrevne metoden ikke fungerer.

Konsollen viste fortsatt en feilmelding forårsaket av tilstedeværelsen av fremmednøkler i tabellen.

Og det oppsto av den grunn at kommandoen ovenfor deaktiverte kontrollen for eksistensen av fremmednøkler i økten, og ikke globalt, som i tillegg til den angitte metoden også kan utføres som følger:

SET SESSION variabelnavn = variabelverdi; SET @@session.variable_name = variabel_verdi; SET @@variabelnavn = variabel_verdi;

I kommandoene ovenfor er variabelen tydelig merket som økt.

Å, fordi jeg lastet csv-fil til en MySQL-tabell via serverkonsollen, uten direkte tilkobling til MySQL-server, da ble det ikke opprettet en økt der verdien for øktvariabelen min ville fungere.

Jeg endte opp med å sette FOREIGN_KEY_CHECKS til global og importen var vellykket.

Du kan gjøre dette på en av følgende måter:

SET GLOBAL variabel_navn = variabel_verdi; SET @@global.variable_name = variabel_verdi;

Etter å ha endret verdiene, er det en god idé å gå gjennom variabelens verdier for å bekrefte at endringene trådte i kraft. For å vise økt- og globale verdier samtidig, bruk følgende kommando:

VELG @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;

Dette avslutter dagens artikkel om import av en MySQL-database. Del dine inntrykk og din egen utvikling i kommentarfeltet. Jeg tror at mange vil være interessert i din erfaring.

Ser deg igjen! 🙂

P.S.: hvis du trenger en nettside eller trenger å gjøre endringer på en eksisterende, men det er ikke tid eller lyst til dette, kan jeg tilby mine tjenester.

Mer enn 5 års erfaring profesjonell nettsideutvikling. Jobbe med PHP, OpenCart,