XLSX, CSV в MySQL с помощью PHP
CSV (Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Каждая строка файла — это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом (delimiter). Под CSV, как правило, понимают набор значений, разделенных какими угодно разделителями, в какой угодно кодировке с какими угодно окончаниями строк.
CSV и PHP.
- fgetcsv — Читает строку из файла и производит разбор данных CSV. Эта функция принимает во внимание настройки локали. К примеру, если LANG установлена в en_US.UTF-8, то файлы в однобайтовой кодировке будут неправильно прочитаны этой функцией.
Примеры импорта экспорта CSV
- Движок БД MySQL. Источник: Создание csv файла средствами MySql
SELECT * INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES STARTING BY '' TERMINATED BY '\r\n' FROM USER;
- При помощи PHP создание csv файла из данных таблицы MySQL
$select = "SELECT * FROM table_name"; $export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) ); $fields = mysql_num_fields ( $export ); for ( $i = 0; $i < $fields; $i++ ) { $header .= mysql_field_name( $export , $i ) . "\t"; } while( $row = mysql_fetch_row( $export ) ) { $line = ''; foreach( $row as $value ) { if ( ( !isset( $value ) ) || ( $value == "" ) ) { $value = "\t"; } else { $value = str_replace( '"' , '""' , $value ); $value = '"' . $value . '"' . "\t"; } $line .= $value; } $data .= trim( $line ) . "\n"; } $data = str_replace( "\r" , "" , $data ); if ( $data == "" ) { $data = "\n(0) Records Found!\n"; } header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=your_desired_name.xls"); header("Pragma: no-cache"); header("Expires: 0"); print "$header\n$data";
Формат файла .xlsx
Формат файла .xlsx основан на Open XML. Для уменьшения размера файла используется сжатие zip.
Файлы xlsx совместимы и с более старыми версиями Microsoft Office - 2000, XP, 2003. Но для этого необходимо установить специальный компонент.
Пример импорта xlsx в MySQL
Используется PHP класс SimpleXLSX class 0.7.13 (Official)
- скачиваем класс SimpleXLSX
git clone https://github.com/shuchkin/simplexlsx.git
- Преобразуем файл XLSX в PHP массив и импортировать его в базу данных, используя расширения PDO PHP. Предварительно очищаем таблицу и после загрузки удаляем строку с названиями столбцов.
try { $etdb = new PDO('mysql:host=' . ET_MYSQL_HOST . ';dbname=' . ET_MYSQL_DATABASE, ET_MYSQL_USER, ET_MYSQL_PASSWORD); } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br />"; } // Clear Table $etdb->query('TRUNCATE TABLE df_garne;'); $xlsx = SimpleXLSX::parse('garne_prices_bags.xlsx'); // Insert rows from xlsx $stmt = $etdb->prepare( "INSERT INTO df_garne (sku, name, color, price_opt, price_retail, size, type, category, brand, url_to_shop, consist, description, fotos, sex) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->bindParam( 1, $sku); $stmt->bindParam( 2, $name); $stmt->bindParam( 3, $color); $stmt->bindParam( 4, $price_opt); $stmt->bindParam( 5, $price_retail); $stmt->bindParam( 6, $size); $stmt->bindParam( 7, $type); $stmt->bindParam( 8, $category); $stmt->bindParam( 9, $brand); $stmt->bindParam( 10, $url_to_shop); $stmt->bindParam( 11, $consist); $stmt->bindParam( 12, $description); $stmt->bindParam( 13, $fotos); $stmt->bindParam( 14, $sex); foreach ($xlsx->rows() as $fields) { $sku = $fields[1]; $name = $fields[2]; $color = $fields[3]; $price_opt = $fields[4]; $price_retail = $fields[5]; $size = $fields[6]; $type = $fields[7]; $category = $fields[8]; $brand = $fields[9]; $url_to_shop = $fields[10]; $consist = $fields[11]; $description = $fields[12]; $fotos = $fields[13]; $sex = $fields[14]; $stmt->execute(); } // Delete row with names of field $etdb->query("DELETE FROM df_garne WHERE sku='Артикул';");
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах