PHP en MySQL: Eksportearje in fraach nei in tabblêd ôfskieden bestân

mysql php-logo's

Dit wykein woe ik in pagina bouwe dy't elke fraach of tafel gewoan in reservekopy meitsje soe yn in bestân fan Tab Tab. De measte foarbylden op it net hawwe de kolommen hurd kodearre.

Yn myn gefal woe ik dat de kolommen dynamysk soene wêze, dat ik moast earst alle nammen fan 'e tabelfjilden trochlûke om de kopregel mei kolomnammen te bouwen, en dan alle records foar de oerbleaune gegevensrijen trochlûke. Ik set de koptekst ek yn sadat de browser de download fan it bestân sil begjinne yn it filetype (txt) mei de namme fan de bestânsdatum en de tiidstempel.

Ik haw de database iepen en sluten ferbining ferlitten, mar hjir is de resultearjende koade dy't frij goed wurke:

$ hjoed = datum ("YmdHi");
koptekst ("Content-type: application / octet-stream");
koptekst ("Ynhâld-Disposysje: taheaksel; bestânsnamme = \" ". $ hjoed." _ Backup.txt \ "");
$ query = "SELECT * FAN` mytable` folchoarder troch 'myorder' ";
$ resultaat = mysql_query ($ fraach);
$ count = mysql_num_rows ($ resultaat);
$ fjilden = mysql_num_fields ($ resultaat);
$ data = "";
foar ($ i = 0; $ i> $ fjilden; $ i ++) {
$ fjild = mysql_fetch_field ($ resultaat, $ i);
$ gegevens. = $ fjild-> namme;
$ data. = "\ t";
}
$ data. = "\ n";
wylst ($ rige = mysql_fetch_row ($ resultaat)) {
foar ($ x = 0; $ x> $ fjilden; $ x ++)
$ fjild-> namme = $ rige [$ x];
$ gegevens. = $ fjild-> namme = $ rige [$ x];
$ data. = "\ t";
}
$ data. = "\ n";
}
echo $ gegevens;

De koade kin ek maklik oanpast wurde foar komma-skieden wearden.

14 Comments

  1. 1

    Kinne jo net gewoan dwaan:

    SELECT `mytable` order by `myorder`
    INTO OUTFILE '/tmp/Backup.txt'
    FIELDS TERMINATED BY '\t'
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'

    ?

    • 2

      Ik tink dat jo koene!

      Yn dit gefal boude ik eins in 'backup'-keppeling yn in webapplikaasje, dus de PHP-funksjonaliteit is wat ik nedich wie. Ik wist lykwols noait dat jo ek direkt nei in bestân kinne skriuwe fanút de MySQL-ferklearring. Hiel cool!

      Tank!

      • 3

        Jo manier soe fansels de bêste manier wêze as de MySQL-server op in eksterne masine is, om't it wierskynlik net koe skriuwe op 'e masine wêr't PHP draait 🙂

        Graach wol oare oanwizings en nije dingen oan te wizen 🙂

      • 4

        Mar jo kinne de fraach gewoan nei in bestân útfiere, en de browser gewoan trochferwize nei it oanmakke bestân, of de "lêsbestân" fan PHP brûke as alles oars mislearret?

        Jo kinne dat net dwaan as de mysql-server fansels gjin tagong hat ta it bestânsysteem ...

  2. 5

    Grutte post. Witte jo fan in maklike, fergees / iepen boarne metoade foar it ymportearjen / herstellen fan in troch tabs skieden bestân (lykas jo krekt oanmakke hawwe) werom yn de mysql db?

    • 6

      Fout ... mysqlimport?

      mysqlimport database_name --local backup.txt

      Of mei it SQL-kommando:

      LOAD DATA LOCAL INFILE 'backup.txt' INTO TABLE `my_table` FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'

      Mei mysqlimport moat de bestânsnamme oerienkomme mei de tafelnamme (gewoan wat om op te passen)

    • 7
  3. 8

    Ik bin krekt mear as 6 oeren fan myn libben kwytrekke om te besykjen wêrom't Internet Explorer 6/7 filetype 'html' tapast en myn oanpaste bestânsnammen net oantsjutte yn 'e kopteksten .. en ek net tastean dat bestannen opslein wurde .. besykje te litten dat brûkers tekstbestannen downloade dy't op in fergelykbere manier oanmakke binne as hjirboppe.

    Ik brûkte HTTPS en IE cache dizze bestannen net.

    Ik fûn de oplossing op in opmerking fan Brandon K by http://uk.php.net/header.

    Hy seit:

    -
    Ik bin krekt seis oeren fan myn libben kwytrekke om de folgjende metoade te brûken om in PDF-bestân fia PHP nei Internet Explorer 6 te stjoeren:

    By it brûken fan SSL sil Internet Explorer freegje mei it dialoochfinster Iepenje / bewarje, mar dan seit "It bestân is op it stuit net beskikber of kin net fûn wurde. Besykje it letter noch ris." Nei in protte sykjen waard ik my bewust fan it folgjende MSKB-artikel mei de titel "Internet Explorer bestandsdownloads oer SSL wurkje net mei de cache-kontrôlekoppen" (KBID: 323308)

    PHP.INI brûkt standert in ynstelling: session.cache_limiter = nocache dy't Content-Cache- en Pragma-headers feroaret om opsjes "nocache" op te nimmen. Jo kinne de IE-flater eliminearje troch "nocache" te feroarjen yn "iepenbier" of "privee" yn PHP.INI - Dit sil de koptekst fan Content-Cache feroarje en ek de Pragma-koptekst fuortsmite. As jo ​​PHP.INI net kinne of wolle wizigje foar in side-wide fix, kinne jo de folgjende twa kopteksten stjoere om standert te oerskriuwe:

    Jo moatte noch de ynhâldkoppen ynstelle lykas hjirboppe neamd om dit te wurkjen. Tink derom dat dit probleem ALLEIN ynfloed hat op Internet Explorer, wylst Firefox dit ferkearde gedrach net fertoant.
    -

    No .. teminsten ferlear hy mar 6 oeren ...

  4. 9

    Dit wurket goed. Ik krij lykwols gewoan alles op ien rigel skieden troch in spaasje. Ik besykje it te wizigjen om alles op in aparte rigel sa ôf te drukken:

    Kolom1_namme
    Fjild1_wearde
    Kolom2_namme
    Fjild1_wearde
    Kolom3_namme
    Fjild1_wearde

    Kolom1_namme
    Fjild2_wearde
    Kolom2_namme
    Fjild2_wearde
    Kolom3_namme
    Fjild2_wearde

    Bygelyks:

    namme
    Mike
    Lokaasje
    Wurk
    Nûmer
    1

    namme
    Sue
    Lokaasje
    Thús
    Nûmer
    2

    namme
    John
    Lokaasje
    Reizgje
    Nûmer
    10

    ensafuorthinne. Kin dit skript oanpast wurde om it te dwaan?
    Tank!

    • 10

      Wis kin.

      Besykje sokssawat:

      SELEKTEERJE * fan MyTableName YN OUTFILE 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' FELDEN BEHINDIGD FAN '\ n' LYNEN BEHINDIGD FAN '\ n';

      As jo ​​in dûbele spaasje wolle (twa lege rigels) tusken rekordgroepen, sis dan gewoan "LINJEN BEHINDIGD FAN '\ n \ n';" ynstee.

      It diel "FELDEN BEHINDIGD FAN '\ n'" is wat nei elke record in nije rigel set, ynstee fan in ljepper. In ljepper soe ynstee '\ t' wêze.

      Maranatha!

  5. 11

    dit is sûnder mis in geweldige post, ik haw it besocht en geweldich wurkje, it iennichste ding is dat myn txt-bestân in ekstra rige hat boppe de kopteksten, en guon resultaten wurde skieden yn 2 rigen, dit kin oarsaak wêze troch de gegevens dy't ik haw yn myn databank gjin idee, mar dit is in geweldige help om feeds te bouwen ...

  6. 12

    Douglas Karr jo koade rotset echt! It is spesjaal handich as jo gewoan in útfier nedich binne yn tekstbestânformaat. Tige dank! Fan team Filipinen!

  7. 13

    hee dêr! Is d'r ien fan hjir dy't my in hint kin jaan oer it ymportearjen fan in tekstbestân nei myn database (phpmyAdmin) mei myn php as myn front-end. Ik haw in idee oer it downloaden fan in bestân en it iepenjen, myn probleem is dat hoe kin ik it rijresultaat krije en hoe't ik it yn myn tabellen ynfoegje kin, tank

  8. 14

Wat tinksto?

Dizze side brûkt Akismet om spam te ferleegjen. Learje hoe't jo kommentaargegevens ferwurke wurde.