Как написать для API на PHP вывод данных в CSV — QlikView
Есть массив данных или таблица в mysql. Необходимо при переходе по URL автоматически запускать скачивание файла CSV. При этом этот URL можно запихать на вход QlikView или Qlik Sense и система автоматически его подтянет.
Код PHP выглядит следующим образом:
<?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:
TableName: LOAD column1, column2, column3, column4 FROM [https://youdomen/api/csvprint_mysql.php] (txt, utf8, embedded labels, delimiter is ';', msq);
<?php $ch = curl_init(); $message = "Текстовое сообщение для отправки"; $tokenAccess = "243669416:ATFm98SmocwLERsqWztIMAPgHEQ5YUWKaXE"; $chatId = "-1001109374812"; curl_setopt($ch, CURLOPT_URL,'https://api.telegram.org/bot' . $tokenAccess . '/sendMessage?chat_id=' . $chatId . '&text=' . $message); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec ($ch); curl_close ($ch); ?>
Автор: Иван Шамаев