Как написать для 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);
?>
Автор: Иван Шамаев



