У меня есть приложение, которое ежедневно записывает данные в SQLite. Теперь я хочу загрузить эти данные на мой веб-хост для использования. Итак, у меня есть запланированный сценарий sFTP для загрузки файла .sqlite на мой веб-хост, а затем запускаю другое запланированное задание для запуска кода php.
Я знаю, что могу использовать SQLite с PDO, но все остальные мои данные на хосте находятся в MySQL, поэтому я хочу сохранить все в формате MySQL.
Я попытался написать код php, который будет читать файл sqlite через PDO, а затем снова вставлять в таблицу MySQL с помощью PDO. Надеемся, что скрипт будет выполняться для нескольких таблиц для импорта, поэтому используйте foreach с ключом / значениями, чтобы мне не приходилось жестко кодировать каждый столбец в каждой таблице (около 30 столбцов в таблице)
Однако я пробовал разные вещи, но просто не могу понять, почему приведенный выше код не работает, поэтому обращаюсь за помощью к гораздо более опытным пользователям. Пожалуйста, просмотрите мой код.
Спасибо
<?php
ini_set('max_execution_time', 480); //480 seconds = 8 minutes
try {
// Connect to MySQL database
$host = '127.0.0.1';
$db = 'coredb';
$user = 'root';
$pass = 'password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdomysql = new PDO($dsn, $user, $pass, $opt);
// Connect to SQLite database in file
$file_db = new PDO('sqlite:frp.sqlite');
$file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * from frp_teamdata';
$stmt = $file_db->prepare($sql);
$stmt->execute();
$sqliteresults = $stmt->fetch(PDO::FETCH_ASSOC);
foreach($sqliteresults as $results){
foreach($results as $key => $value){
$stmt = $pdomysql ->prepare("INSERT INTO frp_teamdata (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $key);
$stmt->bindParam(':value', $value);
$stmt->execute();
}
}
}
catch (PDOException $e) {
print 'Exception : ' . $e->getMessage();
}
?>