Je voudrais modifier par programme les données associées à un ensemble de données dans un fichier HDF5. Je n'arrive pas à trouver un moyen de supprimer un jeu de données par son nom (ce qui me permet de l'ajouter à nouveau avec les données modifiées) ou de mettre à jour un jeu de données par son nom. J'utilise l'API C pour HDF5 1.6.x mais des pointeurs vers n'importe quelle API HDF5 seraient utiles.Supprimer ou mettre à jour un jeu de données dans HDF5?
Répondre
HDF5 n'a pas à ce moment fournir un mécanisme facile à supprimer un jeu de données à partir d'un fichier ou de récupérer l'espace de stockage occupé par un objet supprimé.
Une simple suppression semble hors de question. Mais la section continue:
Suppression d'un ensemble de données et récupérer l'espace utilisé, il peut être fait avec la fonction
H5Ldelete
et le programme utilitaireh5repack
. Avec la fonctionH5Ldelete
, les liens vers un ensemble de données peuvent être supprimés de la structure de fichiers. Une fois que tous les liens ont été supprimés, l'ensemble de données devient inaccessible à toute application et est effectivement supprimé du fichier. La façon de récupérer l'espace occupé par un ensemble de données non lié consiste à écrire tous les objets du fichier dans un nouveau fichier. Tout objet non lié est inaccessible à l'application et ne sera pas inclus dans le nouveau fichier. L'écriture d'objets dans un nouveau fichier peut être effectuée avec un programme personnalisé ou avec le programme utilitaireh5repack
.
Si vous souhaitez supprimer un ensemble de données en C++ vous devez les commandes suivantes:
H5File m_h5File (pathAndNameToHDF5File, H5F_ACC_RDWR); //The hdf5 c++ object.
std::string channelName = "/myGroup/myDataset";
int result = H5Ldelete(m_h5File.getId(), channelName.data(), H5P_DEFAULT);
résultat
sera une valeur non-négative en cas de succès; sinon renvoie une valeur négative. https://support.hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-Delete
Comme l'a dit @MaxLybbert, l'espace disque n'est pas récupéré. Vous devez utiliser l'outil de remballage. Cependant, avec HDF5 v.1.10, l'espace peut être récupéré. Mais le guide de l'utilisateur n'est pas encore prêt: https://support.hdfgroup.org/HDF5/docNewFeatures/NewFeaturesFileSpaceMgmtDocs.html
- 1. Comment insérer/supprimer/mettre à jour dans un arbre ordonné
- 2. Utilisation de VBA pour mettre à jour un jeu d'enregistrements de formulaire dans Access 2007
- 3. mettre à jour le jeu de données en utilisant join et bindingsource?
- 4. Mise à jour du jeu de données VB.NET
- 5. enregistrer ou mettre à jour le problème
- 6. asp.net - interface web de gestion de table de base de données - ajouter, supprimer, mettre à jour
- 7. Utilisation de DataAdapter. Mise à jour pour insérer/mettre à jour des lignes dans un jeu de données (non basé sur des PK) problème
- 8. Parent enfant (Enregistrer, mettre à jour et supprimer)
- 9. mettre à jour les données de json dans db
- 10. comment mettre à jour dataGrid dans la base de données
- 11. Comment mettre à jour un champ avec des données aléatoires?
- 12. Comment mettre à jour mysql?
- 13. PHP/MySQL mettre à jour un enregistrement de nouvelles dans un problème de base de données
- 14. sqlite, METTRE A JOUR OU REMPLACER
- 15. ASP.NET Listboxes pour mettre à jour les données
- 16. Comment contourner le besoin de mettre à jour un dictionnaire
- 17. ASP.Net: Comment mettre à jour la base de données?
- 18. Mettre à jour le panneau de mise à jour
- 19. Mise à jour du jeu PHP
- 20. Meilleure façon de mettre à jour dans Linq To SQL
- 21. DataSet HDF5 fragmenté et slabsize
- 22. Mettre à jour le modèle de données Entité commerciale
- 23. Comment mettre à jour une table relationnelle?
- 24. Jeu de données ASP.NET xsd où dois-je le mettre
- 25. Comment puis-je supprimer une colonne d'un jeu de données?
- 26. Comment mettre à jour un nœud XML?
- 27. Mettre à jour un programme d'installation
- 28. Quand mettre à jour l'index avec Lucene.NET? Async ou pas?
- 29. Mettre à jour une colonne dans un datagridview
- 30. Zend_Db Question ... mettre à jour un incrémenteur
Merci. Une idée de comment PyTables (un moteur python construit au-dessus de HDF5) gère cela? –
La documentation pour "modifier" une table dans PyTables est à http://www.pytables.org/moin/HintsForSQLUsers#Alteringatable, mais notez que "(l'ajout d'une colonne) n'est actuellement pas supporté dans PyTables." –
Il est étrange d'obtenir une rétrogradation anonyme cinq ans après avoir répondu à la question, d'autant plus que ma réponse renvoie à la documentation pertinente qui indiquait clairement que c'était impossible en 2009. Cette capacité a-t-elle été ajoutée? –