За последние 24 часа нас посетили 14904 программиста и 1712 роботов. Сейчас ищут 1297 программистов ...

SQL и файл .csv

Тема в разделе "MySQL", создана пользователем Marizhe, 26 июл 2022.

Метки:
  1. Marizhe

    Marizhe Новичок

    С нами с:
    26 июл 2022
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте!
    У меня задача состоит в следующем. Есть таблица. Нужно сделать запрос к базе, выбрать все поля таблицы. Строки таблицы сохранить в файл *.csv, предварительно создав папку, чтобы эти файлы там хранились.

    Правильно ли я понимаю, что сначала в этой задаче должны идти данные таблицы, SELECT, затем сохранение таблицы в файл *.csv и перенос документов в нужную папку.

    И не шибко понимаю, как это все провернуть в коде. Все, что накидала, но все сырое.


    <?php
    $host = 'localhost'; // адрес сервера
    $db_name = 'database'; // имя базы данных
    $user = 'user'; // имя пользователя
    $password = 'password'; // пароль

    // создание подключения к базе
    $connection = mysqli_connect($host, $user, $password, $db_name);

    // текст SQL запроса, который будет передан базе
    $query = 'SELECT * FROM `USERS`';

    // выполняем запрос к базе данных
    $result = mysqli_query($connection, $query);

    // выводим полученные данные в таблицу
    foreach ($row = $result->fetch_assoc()) {
    fputcsv($fp, $fields);

    // закрываем соединение с базой
    mysqli_close($connection);


    fputcsv(

    resource $stream,

    array $fields,

    string $separator = ",",

    string $enclosure = "\"",

    string $escape = "\\",

    string $eol = "\n"

    ): int|false
    ?>
     
    #1 Marizhe, 26 июл 2022
    Последнее редактирование: 26 июл 2022
  2. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Вам нужно создать массив:
    Код (Text):
    1. // выполняем запрос к базе данных
    2. $result = mysqli_query($connection, $query);
    3. //создаем массив
    4. $fields = [];
    5. // заносим данные из базы в созданный массив
    6. foreach ($row = $result->fetch_assoc()) {
    7. $fields[] = $row;
    8. }
    9. //теперь можно использовать функцию
    10. fputcsv($fp, $fields);
     
  3. Marizhe

    Marizhe Новичок

    С нами с:
    26 июл 2022
    Сообщения:
    3
    Симпатии:
    0
    Еще немного отредачила, но теперь вопрос в том, куда писать SELECT, что идеть до него, а что после. И правильно ли у меня SELECT стоит, не нужно ли вынести его за пределы php.



    <?php
    $host = 'localhost'; // адрес сервера
    $db_name = 'database'; // имя базы данных
    $user = 'user'; // имя пользователя
    $password = 'password'; // пароль

    // создание подключения к базе
    $connection = mysqli_connect($host, $user, $password, $db_name);

    // текст SQL запроса, который будет передан базе
    $query = 'SELECT * FROM `USERS`';

    // выполняем запрос к базе данных
    $result = mysqli_query($connection, $query);

    //создаем массив
    $fields = [];
    // заносим данные из базы в созданный массив
    while($row = mysql_fetch_assoc($result)) {
    fputcsv($row);
    }

    // выводим полученные данные в таблицу
    foreach ($row = $result->fetch_assoc()) {
    fputcsv($fp, $fields);

    //теперь можно использовать функцию
    fputcsv($fp, $fields);
    }
    // закрываем соединение с базой
    mysqli_close($connection);
    }

    fputcsv(
    resource $stream,
    array $fields,
    string $separator = ",",
    string $enclosure = "\"",
    string $escape = "\\",
    string $eol = "\n"
    ): int|false

    ?>
     
  4. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.484
    Симпатии:
    281
    Смотря какую задачу вы себе поставили.
    Если вы хотите данные из таблицы преобразовать в CSV с помощью PHP, то от MySQL вам нужна только выборка.
    Если же выгрузить CSV вы хотите с помощью MySQL, то от PHP вам нужна только папка, так как MySQL папку создать не может.
     
  5. Marizhe

    Marizhe Новичок

    С нами с:
    26 июл 2022
    Сообщения:
    3
    Симпатии:
    0
    Какой из эти двух вариантов надежнее?
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.484
    Симпатии:
    281
    Если таблица небольшая, то без разницы.
    Если большая, то лучше выгружать с помощью MySQL
     
  7. antoniii

    antoniii Активный пользователь

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    А что скрипт то работает уже?