Можно ли преобразовать базу данных SQL в файл CSV, который можно прочитать как ссылку в Javascript? - PullRequest
0 голосов
/ 15 апреля 2020

Iv удалось написать функцию в php, которая на данный момент преобразует мою базу данных в файл CSV, который загружается по ссылке.

$host      = "localhost";
$user      = "root";
$pass      = "";
$db_name   = "the-earth-museum";
$exp_table = "explorer_stories";

$mysqli = new mysqli($host, $user, $pass, $db_name);
$mysqli->set_charset("utf8");
if (!$mysqli)
    die("ERROR: Could not connect. " . mysqli_connect_error());

// Create and open new csv file
$csv  = $exp_table . '.csv';
$file = fopen($csv, 'w');

// Get the table
if (!$mysqli_result = mysqli_query($mysqli, "SELECT * FROM {$exp_table}"))
    printf("Error: %s\n", $mysqli->error);

// Get column names 
while ($column = mysqli_fetch_field($mysqli_result)) {
    $column_names[] = $column->name;
}

// Write column names in csv file
if (!fputcsv($file, $column_names))
    die('Can\'t write column names in csv file');

// Get table rows
while ($row = mysqli_fetch_row($mysqli_result)) {
    // Write table rows in csv files
    if (!fputcsv($file, $row))
        die('Can\'t write rows in csv file');
}

fclose($file);

echo "<a href= \"$csv\"Download\n >Download</a>";

Однако вместо загружаемого файла мне нужен ссылка для чтения вместо URL. Поэтому, когда страница загружается, она извлекает данные из ссылки, а не сначала загружает файл.

var url =
  "data/story-data.csv";

  var template = {
  content: "<h1>{title}</h1><a href='{image}'><img src='img/Biak_Thumbnail.jpg' style='padding-right: 20px;padding-left: 20px;'></a><br><p>Discover <a href='{info}'>the objects</a>, follow <a href='{story}'>their story</a>, explore connections with people and <a href='{senseop}'>{place}</a><br><br>(Plus an additional <a href='{info}'>resource</a> you might find interesting)"
  };

Возможно ли это? или было бы более целесообразно написать ту же функцию в javascript, а затем нет кроссовера?

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете преобразовать его с помощью запроса sql, а затем прочитать этот файл напрямую.

SELECT *
FROM table_na,e
INTO OUTFILE "/path/to/file.csv"
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

и затем прочитать этот файл.

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

...