Sauvegarde Historique

Bonjour à tous et a toutes,
il y a-t-il un moyen de restaurer l’historique des données de la dernière sauvegarde en cas de restauration d’une sauvegarde j-1 ? Sql ou autre… ?

Bonjour.
Quand tu fais une restauration, TOUT se restaure.
Historique comprise !
Donc OUI, tu retrouveras ton historique.

J’ai mal formulé ma question.
je voudrais récupérer que l’historique en cours.
pour ne rien perdre de mes données en repartant de mon avant dernière sauvegarde.

Bonjour

Avec le plugin officiel : Data export.
Jeedom Market

La description du plugin indique qu’il est possible d’importer des données issues du format CSV (et le plugin permet l’export vers ce format).

merci pour l’info,
j’ai vu dans la documentation qu’il faut exporter par commande ou par équipement sur une période donnée.
serait-il possible de faire un scénario qui utiliserait le plugin pour exporter / importer les data de tous les équipements avec une boucle sur 1 semaine ?

Aucune idée, mais il me semble (pas sur hein…) avoir vue que cela était possible.
C’est tout l’intérêt d’avoir un plugin du coup (plugin = commandes, commandes = scénario)

Salut,

Comme expliqué dans la documentation du plugin, il est possible de générer des exports automatisés, que ce soit par programmation ou par scénario, sur les commandes de son choix et la période voulue.

L’import de données doit être réalisé manuellement car il est nécessaire de contrôler la cohérence des données et l’impact sur l’historique de la commande concernée avant de procéder à l’envoi de données dans Jeedom.

2 « J'aime »

Merci pour ces informations, ça va être lourd de revalider 2 ou 300 historiques Manuellement.
Bien souvent, mon besoin et juste retrouver mes data en cours (que j’aurai dans une sauvegarde lancée manuellement) avant de restaurer une sauvegarde de la veille.
je comprends qu’il y ai un risque d’incohérence en cas de création d’historique entre les 2 sauvegardes
dans ce cas il faudrait décrocher les historiques créé avant la sauvegarde manuelle…
Je pensais plus à une solution mySql ?

Question :
Pourquoi vous restaurez si souvent ?

bonjour, pour une solution mysql un scenario avec la fonction code peut le faire
mais c’est trés risqué de jouer avec sa bdd. (donc en connaissance de cause avec jeedom de test pour ne pas tous casser)
vu ton profil install adminer (voir sujet de se forum ou l’ancien)
exemple : Module d'import de fichier CSV afin de réaliser des graphiques - #5 par ajja17orange
ensuite via php
How to Import SQL into a Database using PHP - Phppot

merci pour le post je vais essayer sur mon jeedom de test…

pour installer (je l’ai fait récemment pour une vm) tu télécharges sur ton pc la version linux
via le plug jeexplorer tu créer un répertoire adminer
tu y colles le fichier télécharger en renommant (sans la version)



te reste à retrouver dans ton panneau de config ta clefs mysql et nom de ta bdd
(en bas du dernier onglet)

voici se que tu dois avoir pour authentification

ps et pour un acces multi support via le plug clic lynk tu créé un raccourci
(le plug à un petit default le nom à mettre après icône ne se voit pas)
20210515_092135

!

ok merci pour le tuto de connexion avec adminer, j’y suis… :grinning:
je suppose qu’il faut faire un update des tables history et historyArch

je voudrais tester une requette sql avec adminer, a moins que la fonction import suffise, mon besoin est ponctuel, avant d’utiliser le code php ci dessous…

<?php
$conn =new mysqli('localhost', 'root', '' , 'blog_samples');

$query = '';
$sqlScript = file('database-script.sql');
foreach ($sqlScript as $line)	{
	
	$startWith = substr(trim($line), 0 ,2);
	$endWith = substr(trim($line), -1 ,1);
	
	if (empty($line) || $startWith == '--' || $startWith == '/*' || $startWith == '//') {
		continue;
	}
		
	$query = $query . $line;
	if ($endWith == ';') {
		mysqli_query($conn,$query) or die('<div class="error-response sql-import-response">Problem in executing the SQL query <b>' . $query. '</b></div>');
		$query= '';		
	}
}
echo '<div class="success-response sql-import-response">SQL file imported successfully</div>';
?>

ps je ne comprend pas l’utilité multisupport,
j’ai juste créé un raccourci avec mon navigateur de l’adresse ou se trouve adminer.php.
ça fonctionne avec Firefox 88.0.1

multisupport
pour connection pc,tel,tab local et externe tous navigateur

dans le lien tu as de petit exemple de requête
exemple en scenario fonction code

$sql2 ="DELETE FROM `history`";
$sql2 = $sql2."WHERE `cmd_id` = '$commande'";
$result = DB::Prepare($sql2, NULL, DB::FETCH_TYPE_ROW);
    }

correspond à une requête admirer
DELETE FROM history WHERE cmd_id =‹ 4181 ›;

autre exemple
INSERT INTO historyArch (cmd_id, datetime, value) VALUES (‹ 4181 ›, ‹ 2019-12-01 05:06:33 ›, ‹ 1 ›);

afin de comprendre les nuances de ponctuation quand tu utilises une variable et adapter le script PHP avec un PHP fonctionnant avec jeedom

ok pour le passage adminer / php

pour execution ?
DB::Prepare ($sql2, NULL, DB::FETCH_TYPE_ROW)

quel déclaration faire pour DB:: ?
jeedom comment se connecter à la base ?
mysql_connect et mysql_select_db ne sont pas reconnu…
j’ai codé ça insufisant :

    $nomserveur='localhost'; //nom du seveur
    $nombd='jeedom'; //nom de la base de données
    $login='jeedom'; //login de l'utilisateur
    $pass='7bb2b817c5e0b'; // mot de pass
    $bd=mysql_connect($nomserveur, $login, $pass)or die($scenario->setLog("Erreur de connexion au serveur"));
    mysql_select_db($nombd,$bd)or die($scenario->setLog("Erreur de connexion à la base"));

oui pour l’exécution de la requête sql

je suis comme toi vu que j’ai jamais fait via ta maniére adminer php me suffit
c’est le language natif et bien plus rapide et sécurité de mysql

mais pour essai

$servername = "localhost";
$username = "jeedom";
$password = "mdp";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  $scenario->setLog("Connection failed: " . $conn->connect_error);
}
$scenario->setLog("Connected successfully");

[2021-05-15 23:09:13][SCENARIO] Start : Scenario lance manuellement.
[2021-05-15 23:09:13][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-05-15 23:09:13][SCENARIO] Exécution d’un bloc code
[2021-05-15 23:09:13][SCENARIO] Connected successfully
[2021-05-15 23:09:13][SCENARIO] Fin correcte du scénario

avec erreur de mdp ça donne

[2021-05-15 23:12:00][SCENARIO] Start : Scenario lance manuellement.
[2021-05-15 23:12:00][SCENARIO] Exécution du sous-élément de type [action] : code
[2021-05-15 23:12:00][SCENARIO] Exécution d’un bloc code
[2021-05-15 23:12:00][SCENARIO] Connection failed: Access denied for user ‹ jeedom ›@‹ localhost › (using password: YES)
[2021-05-15 23:12:00][SCENARIO] Connected successfully
[2021-05-15 23:12:00][SCENARIO] Fin correcte du scénario

j’ai utilisé et adapter pour le log cette methode

regarde si il n’existe pas un requête pour import / export

exemple

merci pour l’exemple de connexion et le lien w3schools,
j’ai adapté ton exemple en mode procédurale, je ne maitrise pas la programmation object.

$serveurname='localhost'; //nom du seveur
$login='jeedom'; //login de l'utilisateur
$pass='7bb2b817c5e0b6'; // mot de pass
$namedb='jeedom'; //nom de la base de données

$conn=mysqli_connect($serveurname, $login, $pass, $namedb);
if (mysqli_connect_errno()) {
  	$scenario->setLog("ERREUR de connexion MySQL: " . mysqli_connect_error());
  	exit();
} else {
	$scenario->setLog("Connexion ok");
	mysqli_close($conn);
}

j’y comprends rien de l’import CSV chez stackoverflower :upside_down_face:

je préférerais stocker mon historique dans une autre base
Pour tester j’ai voulu créer une 2eme base avec adminer dans le même répertoire (html) que db_backup.
Pour y mettre une sélection de données de history et hystoryarch, je me suis planté !
Je n’ai pas les droits (je crois www-data) avec adminer évidement connecté en jeedom,
Faut il se connecter en user www-data si oui quel mdp ?

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.