PHP ug MySQL: I-export ang usa ka Query sa usa ka Tab Delimited File

mga logo sa phnqq php

Karong hinapos sa semana gusto nako nga magtukod usa ka panid nga mag-backup ra sa bisan unsang pangutana o lamesa sa usa ka Tab Delimited file. Kadaghanan sa mga pananglitan sa net adunay mga kolum nga lisud nga naka-code.

Sa akong kaso, gusto nako nga ang mga haligi mahimong dinamiko busa kinahanglan nako nga una nga loopon ang tanan nga mga ngalan sa kapatagan sa lamesa aron matukod ang header row nga adunay mga ngalan sa kolum, ug pagkahuman loop sa tanan nga mga talaan alang sa nahabilin nga mga row sa data. Gitakda ko usab ang header aron ang browser magsugod sa pag-download sa file sa filetype (txt) nga adunay ngalan sa petsa sa file ug timestamp.

Gibiyaan nako ang database nga bukas ug nagsira nga koneksyon, apan ania ang sangputanan nga code nga ninglihok og maayo:

$ karon = petsa ("YmdHi");
header ("Type-content: application / octet-stream");
header ("Content-Disposition: attachment; filename = \" ". $ karon." _ Backup.txt \ "");
$ query = "SELECT * GIKAN SA` mytable` order pinaagi sa `myorder`";
$ resulta = mysql_query ($ pangutana);
$ count = mysql_num_rows ($ resulta);
$ mga natad = mysql_num_fields (resulta sa $);
$ data = "";
alang sa ($ i = 0; $ i> $ mga uma; $ i ++) {
$ uma = mysql_fetch_field (resulta sa $, $ i);
$ datos. = $ uma-> ngalan;
$ datos. = "\ t";
}
$ datos. = "\ n";
samtang ($ row = mysql_fetch_row ($ resulta)) {
alang sa ($ x = 0; $ x> $ mga uma; $ x ++) {
$ uma-> ngalan = $ laray [$ x];
$ datos. = $ uma-> ngalan = $ laray [$ x];
$ datos. = "\ t";
}
$ datos. = "\ n";
}
data sa echo $;

Ang code dali nga mabag-o alang usab sa mga gibulag nga bili sa koma.

14 Comments

  1. 1

    Dili ba mahimo ra nimo:

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

    ?

    • 2

      Tingali mahimo nimo!

      Sa kini nga kaso, naghimo gyud ako usa ka 'backup' nga link sa usa ka web application, busa ang pagpaandar sa PHP mao ang akong kinahanglan. Bisan pa, wala gyud ako nahibal-an nga mahimo ka usab magsulat sa usa ka file nga direkta gikan sa pahayag sa MySQL. Bugnaw kaayo!

      Salamat!

      • 3

        Ang imong paagi siyempre mao ang labing kaayo nga paagi kung ang MySQL server naa sa usa ka hilit nga makina, tungod kay tingali dili kini makasulat sa makina diin ang PHP nagdagan 🙂

        Nalipay nga ipunting ang ubang mga direksyon bisan bag-o nga mga butang 🙂

      • 4

        Apan mahimo ra nimo mapadagan ang pangutana sa usa ka file, ug i-redirect lang ang browser sa nahimo nga file, o gamiton ang "readfile" sa PHP kung ang tanan napakyas?

        Dili nimo kini mahimo kung ang akong server sa mysql wala’y access sa filesystem nga kurso…

  2. 5

    Maayo nga post. Nahibal-an ba nimo ang usa ka dali, libre / abli nga pamaagi sa pagkuhaan sa pag-import / pagpahiuli sa usa ka file nga nahimutang sa tab (sama sa imong gibuhat) nga ibalik sa MySQL db?

    • 6

      Sayup… mysqlimport?

      mysqlimport database_name --local backup.txt

      O uban ang SQL nga mando:

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

      Uban sa mysqlimport, ang filename kinahanglan motugma sa ngalan sa lamesa (usa ka butang nga mabantayan)

    • 7
  3. 8

    Nawad-an na lang ako labaw pa sa 6 ka oras sa akong kinabuhi nga naningkamot nga mag-ehersisyo kung ngano nga ang Internet Explorer 6/7 naglapat sa filetype 'html' ug ug dili pagdawat ang akong gipasadya nga mga filename nga gitino sa mga header .. ug wala usab tugoti nga maluwas ang mga file .. kanus-a pagsulay sa mga tiggamit nga mag-download mga file sa teksto nga gihimo sa parehas nga paagi sa taas.

    Gigamit ko ang HTTPS ug ang IE dili cache sa kini nga mga file.

    Nakit-an nako ang solusyon sa usa ka komento ni Brandon K sa http://uk.php.net/header.

    Siya miingon:

    -
    Nawala ra ang unom ka oras sa akong kinabuhi nga naningkamot nga gamiton ang mosunud nga pamaagi aron makapadala usa ka PDF file pinaagi sa PHP sa Internet Explorer 6:

    Kung naggamit SSL, ang Internet Explorer mag-aghat nga adunay dayalogo sa Open / Save, apan unya giingon nga "Ang file karon dili magamit o dili makit-an. Palihug pagsulay usab sa ulahi. ” Pagkahuman sa daghang pagsusi nahibal-an nako ang mosunud nga artikulo sa MSKB nga giulohan og "Mga pag-download sa file sa Internet Explorer sa SSL dili molihok sa mga cache control header" (KBID: 323308)

    Ang PHP.INI pinaagi sa default naggamit usa ka setting: session.cache_limiter = nocache nga nagbag-o sa mga header sa Content-Cache ug Pragma aron maapil ang mga kapilian nga "nocache". Mahimo nimong tangtangon ang sayup sa IE pinaagi sa pagbag-o sa "nocache" ngadto sa "publiko" o "pribado" sa PHP.INI - Kini ang magbag-o sa header sa Content-Cache ingon man hingpit nga tangtangon ang header sa Pragma. Kung dili nimo gusto o dili nimo pagbag-o ang PHP.INI alang sa usa ka pag-ayo sa tibuuk nga site, mahimo nimo ipadala ang mosunud nga duha nga mga header aron mapuno ang mga default:

    Kinahanglan mo pa usab nga itakda ang mga header sa sulud ingon nalista sa taas aron kini molihok. Palihug timan-i kini nga problema LAMANG nga epekto sa Internet Explorer, samtang ang Firefox wala ipakita kini nga sayup nga pamatasan.
    -

    Aw .. labing menos nawala ra siya sa 6 ka oras…

  4. 9

    Maayo kini molihok. Bisan pa, nakuha ko ra ang tanan sa usa ka linya nga gibulag sa usa ka wanang. Gisulayan nako kini pagbag-o aron maimprinta ang tanan sa usa ka linain nga linya nga sama niini:

    Column1_name
    Field1_value
    Column2_name
    Field1_value
    Column3_name
    Field1_value

    Column1_name
    Field2_value
    Column2_name
    Field2_value
    Column3_name
    Field2_value

    Pananglitan:

    ngalan
    Mike
    Location
    Buhat
    Numero
    1

    ngalan
    Sue
    Location
    Home
    Numero
    2

    ngalan
    Juan
    Location
    Travel
    Numero
    10

    ug uban pa. Mahimo bang mabag-o ang kini nga script aron mahimo kini?
    Salamat!

    • 10

      Siguro mahimo.

      Sulayi ang ingon niini:

      PILI * gikan sa MyTableName NGADTO SA KASABUTAN 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' MGA PELIGRO NGA Natapos NGA '\ n' LINES NGA Natapos NGA '\ n';

      Kung gusto nimo usa ka doble nga wanang (duha nga wala’y sulod nga linya) taliwala sa mga grupo sa rekord, isulti ra ang “LINES TERMINATED BY '\ n \ n';” sa baylo.

      Ang bahin nga "NAPATUNGDAN SA FIELDS NI '\ n'" nga bahin mao ang nagbutang usa ka bag-ong linya pagkahuman sa matag rekord, imbis nga usa ka tab. Ang usa ka tab mahimong '\ t' hinoon.

      Maranatha!

  5. 11

    kini usa ka maayo nga post, gisulayan nako kini ug maayo nga buhat, ang bugtong nga butang nga ang akong txt file adunay dugang nga hilisgutan sa taas sa mga ulohan sa header, ug ang pipila nga mga resulta gibulag sa 2 ka laray, mahimo kini hinungdan sa datos nga akong sa akong Database wala'y ideya, apan kini usa ka maayong tabang aron matukod ang mga feed…

  6. 12

    Douglas Karr bato gyud ang imong code! Labi kaayo kini nga magamit kung kinahanglan nimo ang usa ka output nga anaa sa format sa textfile. Salamat kaayo! Gikan sa team Philippines!

  7. 13

    uy! Adunay ba bisan kinsa nga gikan dinhi nga makahatag kanako usa ka timaan bahin sa pag-import sa usa ka textfile sa akong database (phpmyAdmin) gamit ang akong php ingon akong pangunahan. Adunay akong ideya bahin sa pag-download sa usa ka file ug pag-abli niini, ang akong problema mao kung giunsa nako makuha ang resulta sa laray ug kung giunsa kini isulud sa akong mga lamesa, salamat

  8. 14

Unsay imong hunahuna?

Kini nga site naggamit sa Akismet sa pagpakunhod sa spam. Hibal-i kon giunsa ang pagproseso sa datos sa imong komento.