Как написать для API на PHP вывод данных в CSV — QlikView
Есть массив данных или таблица в mysql. Необходимо при переходе по URL автоматически запускать скачивание файла CSV. При этом этот URL можно запихать на вход QlikView или Qlik Sense и система автоматически его подтянет.
Код PHP выглядит следующим образом:
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 |
<?php // параметр вывода, сделаем так, чтобы файл загружался, а не отображался header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=data.csv'); // создаем указатель файла, подключенный к выходному потоку $output = fopen('php://output', 'w'); // Первая строк необходима, чтобы Excel понял, что формат CSV на UTF-8 кодировке fwrite($output,b"\xEF\xBB\xBF" ) ; // Название колонок (заголовки) fputcsv($output, array('column1', 'column2', 'column3', 'column4'), ";"); // Задаем коннекшн :) mysql_connect('server-mysql-name', 'mysqluser', 'password'); //Устанавливаем несколько кодировок, иногда чего-то нехватает, лучше перестраховаться множеством установок mysql_query("set collation_connection = 'utf8_general_ci'"); mysql_query("set character_set_client='utf8'"); mysql_query("set character_set_results='utf8'"); mysql_query("set character_set_system='utf8'"); mysql_query('SET names=utf8'); mysql_select_db('dbname'); $rows = mysql_query('SELECT column1, column2, column3, column4 FROM tablename'); // Перебираем строки и печатаем в файл csv while ($row = mysql_fetch_assoc($rows)) fputcsv($output, $row, ";"); ?> |
Загрузка данных в QlikView (Код) из API с печатью скачиваемого файла csv:
1 2 3 4 5 6 7 8 |
TableName: LOAD column1, column2, column3, column4 FROM [https://youdomen/api/csvprint_mysql.php] (txt, utf8, embedded labels, delimiter is ';', msq); |
2 Comments