ФАЙЛ SQL LOAD заполняет таблицу нулями / нулевыми значениями - PullRequest
0 голосов
/ 29 марта 2019

Итак, у меня проблема с загрузкой моего CSV в базу данных SQL с помощью PHP и Wordpress. Оба работают на локальном xammp atm.

Это мой код для загрузки файла CSV. Сначала он загружает его через html-форму в некоторую временную папку (данные), а затем пытается с помощью LOAD DATA скопировать содержимое в таблицу (wp_data)

<?php
if (isset($_POST['submit'])) {
    global $wordpress,$wpdb;
    $file = $_FILES['fileToUpload']['tmp_name'];
    $target_dir = $_SERVER['DOCUMENT_ROOT']."/data";
    $target_file = $target_dir . '/' . basename($_FILES["fileToUpload"]["name"]);
    move_uploaded_file($file, $target_file);

    $sql="
        LOAD DATA INFILE '$target_file' INTO TABLE wp_data FIELDS TERMINATED BY ';' IGNORE 1 ROWS";
    $query = $wpdb->query($sql);
}
?>

Часть загрузки работает нормально, однако, когда она пытается заполнить таблицу данными, она просто заполняет значения "0s" / NULL, как this :

enter image description here

Файл в виде текста выглядит как this :

enter image description here

А визуально это выглядит как это :

enter image description here

Структура таблицы от SHOW CREATE TABLE wp_data:

CREATE TABLE `wp_data` (
 `Unix_time` int(11) NOT NULL,
 `Message` text NOT NULL,
 `Time` float NOT NULL,
 `DF` int(11) NOT NULL,
 `Type_code/BDS_number` int(11) NOT NULL,
 `Latitude` double NOT NULL,
 `Longitude` double NOT NULL,
 `Altitude` int(11) NOT NULL,
 `Ground_speed` double NOT NULL,
 `Baro_diff` int(11) NOT NULL,
 `Heading` int(11) NOT NULL,
 `TAS` int(11) NOT NULL,
 `Mach` float NOT NULL,
 `FOM_SOURCE` varchar(40) DEFAULT NULL,
 `Wind_speed` varchar(40) DEFAULT NULL,
 `Wind_direction` varchar(40) DEFAULT NULL,
 `Temperture` text,
 `Pressure` varchar(40) DEFAULT NULL,
 `Turbulence` varchar(40) DEFAULT NULL,
 `Humidity` varchar(40) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

Что я здесь не так делаю? Я новичок в PHP и застрял на этом : (...

Thx.

1 Ответ

1 голос
/ 29 марта 2019

Исправлено, установив кодировку в запросе на CHARACTER SET UTF8, например:

LOAD DATA INFILE '$target_file'
INTO TABLE wp_data 
CHARACTER SET UTF8 
FIELDS TERMINATED BY ';'
IGNORE 1 ROWS;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...