Извините, если это было задано раньше, но я не смог найти ничего, что касалось бы моего дела здесь, на SE.PHP - импорт CSV с автоматическим увеличением ID
Я пытаюсь импортировать CSV-файл в таблицу базы данных Mysql, причем обе таблицы CSV имеют одинаковое количество и порядок столбцов, за исключением того, что столбец таблицы ID
в CSV-файле отсутствует.
Что я хочу достичь, это импортировать CSV в таблицу при генерации номера ID
, который автоматически увеличивается с каждой записью. Это не представляется возможным, поскольку CSV всегда, кажется, хочет вставить свои данные в первый столбец в таблице, но в моем случае мне нужно, чтобы это был второй столбец.
Как я могу подойти к этому и есть ли какой-либо ссылочный код, который я могу изучить? В настоящее время я работаю над этим подходом PDO, но у меня есть вышеупомянутые трудности.
PHP
<?php
$databasehost = "localhost";
$databasename = "test";
$databasetable = "sample";
$databaseusername="test";
$databasepassword = "";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "filename.csv";
if(!file_exists($csvfile)) {
die("File not found. Make sure you specified the correct path.");
}
try {
$pdo = new PDO("mysql:host=$databasehost;dbname=$databasename",
$databaseusername, $databasepassword,
array(
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
)
);
} catch (PDOException $e) {
die("database connection failed: ".$e->getMessage());
}
$affectedRows = $pdo->exec("
LOAD DATA LOCAL INFILE ".$pdo->quote($csvfile)." INTO TABLE `$databasetable`
FIELDS TERMINATED BY ".$pdo->quote($fieldseparator)."
LINES TERMINATED BY ".$pdo->quote($lineseparator));
echo "Loaded a total of $affectedRows records from this csv file.\n";
?>
Спасибо
Вы используете phpMyAdmin? –
Мне нужно сделать это на PHP основе CronJob. Но у меня есть phpMyAdmin. – Armitage2k
можете ли вы показать свой код, который у вас есть? – LBA