Below is the text of the page https://pro100pro.com/2007/06 stored 2007-12-15 by archive.org.ua. The original page over time could change. View as original html

Pro100pro Yaroslav Vorozhko Home - About programming, management

Yaroslav Vorozhko Home [/] About programming, management and business Home Resume/CV June 24 Как быстро преобразовать данные из MySQL в CSV Posted In: MySQL by Yaroslav Vorozhko Привет, привожу пару примеров преобразования из mysql в CSV формат. Полученный файл можно открыть например в Excel. Пример взять для cms oscommerce: “Отчет по заказам”. SELECT “Order #”, “Product name’s”, “Quantity”, “Total” UNION SELECT o.orders_id, group_concat(op.products_name), sum(op.products_quantity), LEFT(ot.value, LENGTH(ot.value)-2) as total INTO OUTFILE ‘/tmp/report.csv’ FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘n’ FROM orders o INNER JOIN orders_products op ON (op.orders_id = o.orders_id) INNER JOIN orders_total ot on (ot.orders_id = o.orders_id and ot.class = ‘ot_total’) group by o.orders_id Применять order by тут нельзя, иначе заголовок CSV файла может оказаться не на первой строке. Это быстрый и простой способ создание CSV отчетов из SQL, но с ним сопряжена одна проблема безопасности: для создания файлов из mysql вам нужно получить привелегию FILE, что является плохим тоном настройки mysql и может вызвать проблемы безопасности всего сервера, особенно если mysql запущен от пользователя root. Если вы не хотите использовать привелегию FILE MySQL, то можно воспользоваться PHP для записи результатов запроса в csv файл. В php - это делается так: $fp = fopen(’/tmp/report.csv’, ‘w’); $res = mysql_query($sql) or die(mysql_error()); while($row = mysql_fetch_assoc($res)) { fputcsv($fp, $row, ‘,’, ‘”‘); } fclose($fp); //for php4 compatibilities if (! function_exists(’fputcsv’) ) { //example from http://www.php.net/manual/ru/function.fputcsv.php function fputcsv($filePointer,$dataArray,$delimiter=”,”,$enclosure=”\”"){ // Write a line to a file // $filePointer = the file resource to write to // $dataArray = the data to write out // $delimeter = the field separator // Build the string $string = “”; // for each array element, which represents a line in the csv file… foreach($dataArray as $line){ // No leading delimiter $writeDelimiter = FALSE; foreach($line as $dataElement){ // Replaces a double quote with two double quotes $dataElement=str_replace(”\”", “\”\”", $dataElement); // Adds a delimiter before each field (except the first) if($writeDelimiter) $string .= $delimiter; // Encloses each field with $enclosure and adds it to the string $string .= $enclosure . $dataElement . $enclosure; // Delimiters are used every time except the first. $writeDelimiter = TRUE; } // Append new line $string .= “\n”; } // end foreach($dataArray as $line) // Write the string to the file fwrite($filePointer,$string); } } Blog this: Digg it del.icio.us Technorati? No related posts Up? 0 Subscribe categories Ajax (2) Books (5) Business (6) CakePHP (2) ECommerce (1) Javascript (8) jQuery (2) MySQL (3) Optimization (2) Personal (13) Photoblog (2) PHP (8) Prototype (2) Tips and Tricks (11) blogroll Best tech videos Best World Photos Julia Vorozhko Magento Ukrainian PHP Community Vedeney's Blog calendar June 2007 M T W T F S S « May Jul » 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 © Yaroslav Vorozhko Home 2007 WordPress Themes Sponsored By Web Hosting Unleashed