PHP і MySQL: Экспарт запыту ў файл з раздзеланымі ўкладкамі

лагатыпы MySQL PHP

У гэтыя выхадныя я хацеў стварыць старонку, якая проста зрабіла б рэзервовую копію любога запыту ці табліцы ў файл з раздзяленнем табуляцыі. У большасці прыкладаў, размешчаных у сетцы, калонкі маюць жорсткую кадоўку.

У маім выпадку я хацеў, каб слупкі былі дынамічнымі, таму мне трэба было спачатку прайсціся па ўсіх імёнах палёў табліцы, каб пабудаваць загаловачны радок з імёнамі слупкоў, а потым прайсціся па ўсіх запісах для астатніх радкоў дадзеных. Я таксама ўстанавіў загаловак так, каб браўзэр ініцыяваў загрузку файла ў тыпе файла (txt) з імем даты і пазнакай часу.

Я пакінуў базу дадзеных адкрытай і закрытай сувяззю, але вось атрыманы код, які працаваў даволі добра:

$ сёння = дата ("YmdHi");
загаловак ("Тып змесціва: дадатак / актэт-паток");
загаловак ("Content-Disposition: укладанне; імя файла = \" ". $ сёння." _ Backup.txt \ "");
$ query = "ВЫБАРЫ * З` mytable` парадак па `myorder`";
$ вынік = mysql_query ($ запыт);
$ count = mysql_num_rows ($ вынік);
$ поля = mysql_num_fields ($ вынік);
$ дадзеных = "";
для ($ i = 0; $ i> $ палёў; $ i ++) {
$ поле = mysql_fetch_field ($ вынік, $ i);
$ дадзеныя. = $ поле-> імя;
$ дадзеныя. = "\ t";
}
$ дадзеныя. = "\ n";
пакуль ($ радок = mysql_fetch_row ($ вынік)) {
для ($ x = 0; $ x> $ палёў; $ x ++) {
$ field-> name = $ row [$ x];
$ дадзеныя. = $ поле-> імя = $ радок [$ x];
$ дадзеныя. = "\ t";
}
$ дадзеныя. = "\ n";
}
echo $ data;

Код можна лёгка змяніць і для значэнняў, падзеленых коскамі.

14 Каментары

  1. 1
    • 2

      Мяркую, вы маглі б!

      У гэтым выпадку я на самой справе ствараў спасылку "рэзервовага капіявання" ў вэб-дадатку, таму мне спатрэбілася функцыянальнасць PHP. Аднак я ніколі не ведаў, што вы таксама можаце пісаць у файл непасрэдна з заявы MySQL. Вельмі файна!

      Дзякуй!

      • 3

        Ваш шлях, вядома, быў бы лепшым, калі б сервер MySQL знаходзіўся на аддаленай машыне, бо ён, верагодна, не змог бы запісаць на машыну, дзе працуе PHP 🙂

        Рады адзначыць іншыя напрамкі і новыя рэчы, хоць though

      • 4

        Але вы можаце проста запусціць запыт у файл і проста перанакіраваць браўзэр на згенераваны файл альбо выкарыстаць PHP-файл "readfile", калі ўсё астатняе не атрымаецца?

        Вы не зможаце гэтага зрабіць, калі сервер mysql, вядома, не мае доступу да файлавай сістэмы ...

  2. 5

    Выдатны пост. Ці ведаеце вы пра просты, бясплатны / з адкрытым зыходным кодам спосаб імпарту / аднаўлення файла, размежанага табуляцыяй (як вы толькі што стварылі) назад у db mysql?

  3. 8

    Я проста страціў больш за 6 гадзін свайго жыцця, спрабуючы зразумець, чаму Internet Explorer 6/7 ужывае тып файла "html", а таксама не прымае ўласныя імёны файлаў, указаныя ў загалоўках .. спроба прымусіць карыстальнікаў загружаць тэкставыя файлы, створаныя падобным чынам.

    Я выкарыстаў HTTPS, і IE не кэшуе гэтыя файлы.

    Я знайшоў рашэнне ў каментары Брэндона К. на http://uk.php.net/header.

    Ён кажа:

    -
    Я проста страціў шэсць гадзін жыцця, спрабуючы выкарыстаць наступны метад для адпраўкі PDF-файла праз PHP у Internet Explorer 6:

    Пры выкарыстанні SSL Internet Explorer прапануе дыялогавае акно "Адкрыць / захаваць", але потым кажа: "Файл зараз недаступны альбо яго нельга знайсці. Калі ласка паспрабуйце зноў пазней." Пасля доўгіх пошукаў мне стала вядома наступны артыкул MSKB пад назвай "Загрузка файлаў Internet Explorer па SSL не працуе з загалоўкамі кіравання кэшам" (KBID: 323308)

    PHP.INI па змаўчанні выкарыстоўвае параметр: session.cache_limiter = nocache, які змяняе загалоўкі Content-Cache і Pragma, каб уключыць опцыі "nocache". Вы можаце ліквідаваць памылку IE, змяніўшы "nocache" на "public" ці "private" у PHP.INI - Гэта зменіць загаловак Content-Cache, а таксама цалкам выдаліць загаловак Pragma. Калі вы не можаце альбо не хочаце змяніць PHP.INI для выпраўлення для ўсяго сайта, вы можаце адправіць наступныя два загалоўкі, каб перазапісаць стандартныя:

    Вам усё роўна трэба будзе ўсталяваць загалоўкі змесціва, як пералічана вышэй, каб гэта працавала. Звярніце ўвагу, гэтая праблема ўздзейнічае ТОЛЬКІ на Internet Explorer, у той час як Firefox не дэманструе такога недахопу.
    -

    Ну .. па меншай меры, ён страціў толькі 6 гадзін ...

  4. 9

    Гэта добра працуе. Аднак я проста атрымліваю ўсё ў адзін радок, падзелены прабелам. Я спрабую змяніць яго, каб надрукаваць усё ў асобным радку, як гэта:

    Імя_калонкі1
    Поле1_значэнне
    Імя_калонкі2
    Поле1_значэнне
    Імя_калонкі3
    Поле1_значэнне

    Імя_калонкі1
    Поле2_значэнне
    Імя_калонкі2
    Поле2_значэнне
    Імя_калонкі3
    Поле2_значэнне

    Напрыклад:

    Імя
    Майк
    размяшчэнне
    Працаваць
    Нумар
    1

    Імя
    Сью
    размяшчэнне
    Галоўная
    Нумар
    2

    Імя
    Джон
    размяшчэнне
    Падарожнічаць
    Нумар
    10

    і гэтак далей. Ці можна змяніць гэты сцэнар, каб зрабіць гэта?
    Дзякуй!

    • 10

      Вядома, можа.

      Паспрабуйце нешта накшталт гэтага:

      SELECT * from MyTableName INTO OUTFILE 'MyTableName_MySQL-TAB-DELIMITED-29JUN08.txt' ПОЛІ, СКАНАНЫЯ '\ n' ЛІНІІ, СКАНЧАНЫЯ '\ n';

      Калі вам патрэбны двайны прабел (два пустыя радкі) паміж групамі запісаў, проста скажыце "РАДКІ, СКАНАНЫЯ" \ n \ n '; " замест гэтага.

      Частка "ПОЛІ, ПРЫКАНАНЫЯ" \ n '"- гэта тое, што ставіць новы радок пасля кожнага запісу, а не ўкладкі. Замест гэтага ўкладка будзе "\ t".

      Маранафа!

  5. 11

    гэта выклікальна выдатны пост, я паспрабаваў і выдатна працуе, адзінае, што ў маім txt-файле ёсць дадатковы радок над загалоўкамі загалоўкаў, а некаторыя вынікі падзелены ў 2 радкі, гэта можа быць выклікана дадзенымі, якія ў мяне ёсць у маёй базе дадзеных паняцця не маю, але гэта выдатная дапамога для стварэння каналаў ...

  6. 12

    Douglas Karr ваш код сапраўды качаецца! Гэта вельмі карысна, калі вам проста патрэбны вывад у фармаце тэкставага файла. Вялікі дзякуй! Ад каманды Філіпіны!

  7. 13

    Гэй там! Ці ёсць хто-небудзь адсюль, які можа падказаць нам пра імпарт тэкставага файла ў маю базу дадзеных (phpmyAdmin), выкарыстоўваючы мой php як мой інтэрфейс. У мяне ёсць ідэя загрузіць файл і адкрыць яго, мая праблема ў тым, што як я магу атрымаць вынік радка і як уставіць яго ў свае табліцы, дзякуй

  8. 14

Што вы думаеце?

Гэты сайт выкарыстоўвае Akismet для барацьбы са спамам. Даведайцеся, як дадзеныя апрацоўваюцца каментар.