Я сейчас пытаюсь загрузить данные из reloads.csv
в мою базу данных.
Но поля DATETIME усекаются. Я позаботился о том, чтобы получить правильный формат даты, как в этом ответе .
Когда я загружаю данные, я получаю такую ошибку:
успешно подключен
537,496,3,4,4.36186,50.86034,4.372,50.86309,2017-01-01T22: 05: 55,2017-01-02T05: 02: 20
248,129,2,4,4.37052,50.86135,4.36254,50.82652,2017-01-01T23: 56: 45,2017-01-02T05: 05: 33 Ошибка: INSERT INTO Перезагрузка (scooter, user, initialLoad, finalLoad, finalX, sourceX, sourceY , destinationX, destinationY, startTime, endTime) ЗНАЧЕНИЯ ('248', '129', '2', '4', '4.37052', '50 .86135 ',' 4.36254 ',' 50.82652 ',' 2017-01-01 23 : 56: 45 ',' 2017-01-02 05:05:33 ')
Дубликат записи «2017-01-01» для ключа «ПЕРВИЧНЫЙ»
363,17,1,4,4.36902,50.87497,4.3785,50.87691,2017-01-01T22: 00: 52,2017-01-02T05: 08: 34 Ошибка: INSERT INTO Перезагрузка (scooter, user, initialLoad, finalLoad, sourceX , sourceY, destinationX, destinationY, startTime, endTime) ЗНАЧЕНИЯ ('363', '17', '1', '4', '4.36902', '50 .87497 ',' 4.3785 ',' 50.87691 ',' 2017-01- 01 22:00:52 ',' 2017-01-02 05:08:34 ')
Дубликат записи «2017-01-01» для ключа «ПЕРВИЧНЫЙ»
...
reloads.csv имеет следующую структуру:
scooter, user, initialLoad, finalLoad, sourceX, sourceY, destinationX,
destinationY, startTime, endTime
537,496,3,4,4.36186,50.86034,4.372,50.86309,2017-01-01T22:05:55,2017-01-02T05:02:20
248,129,2,4,4.37052,50.86135,4.36254,50.82652,2017-01-01T23:56:45,2017-01-02T05:05:33
363,17,1,4,4.36902,50.87497,4.3785,50.87691,2017-01-01T22:00:52,2017-01-02T05:08:34
...
Я создал таблицу перезарядки следующим образом:
$sql = "CREATE TABLE Reloads (
scooter INT NOT NULL,
user INT NOT NULL,
initialLoad INT,
finalLoad INT,
sourceX FLOAT,
sourceY FLOAT,
destinationX FLOAT,
destinationY FLOAT,
startTime DATETIME NOT NULL,
endTime DATETIME,
PRIMARY KEY (startTime),
FOREIGN KEY (scooter) REFERENCES Scooters(numero),
FOREIGN KEY (user) REFERENCES Rechargeurs(ID)
)";
А вот как нагрузка перезагружается в таблицу перезарядок:
//INSERT RELOADS IN DB
if ($fh = fopen("../../data2019/reloads.csv", 'r')) {
$line = fgets($fh);//remove first line
$sql = "";
while (!feof($fh)) {
$line = fgets($fh);
echo "<br>" . $line;
//echo $line;
$str_arr = explode(",", $line);
//print_r($str_arr);
if (count($str_arr) == 10) {
$startTime = str_replace("T", " ",$str_arr[8]);
$endTime = str_replace("T", " ",$str_arr[9]);
$sql = "INSERT INTO Reloads (scooter, user, initialLoad, finalLoad, sourceX, sourceY, destinationX, destinationY,
startTime, endTime)
VALUES (
'$str_arr[0]',
'$str_arr[1]',
'$str_arr[2]',
'$str_arr[3]',
'$str_arr[4]',
'$str_arr[5]',
'$str_arr[6]',
'$str_arr[7]',
'$startTime',
'$endTime'
)";
if ($conn->query($sql) === TRUE) {
//echo "\nNew record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
fclose($fh);
}
У меня больше нет представления о том, как отладить и решить проблему. Все даты урезаны в этой форме в моей базе данных: 2017-01-01
Заранее спасибо