8
votes

Serializing A DataTable pour une réutilisation ultérieure

J'ai un jeu de données peuplé, je voudrais sérialiser dans un fichier pour une utilisation ultérieure. J'ai examiné les options impliquées dans cela et je me suis demandé si quelqu'un pouvait me diriger dans la bonne direction.

Ce que je vais créer, ce sont deux méthodes - une pour écrire le jeu de fichiers, et un autre pour créer un nouveau jeu de données à l'aide du fichier comme entrée. Est-il logique d'utiliser les méthodes WRITXML () et Charger () pour le faire, et dans l'affirmative, quels drapeau (s) sont-ils ceux qui se concentrent sur? Merci pour les conseils.

J'utilise .NET 2.0 si cela aide.


0 commentaires

5 Réponses :


1
votes

Vous pouvez utiliser la technique de base de sérialiser votre base de données dans des fichiers CSV avec des en-têtes. Certains systèmes de gestion de base de données prennent en charge le chargement facile des données à partir de ces fichiers. Et au cas où votre SGBD ne serait pas trop difficile d'écrire du code qui le ferait pour vous. Est-ce que cela répond à votre question?

À mon avis, l'inconvénient de XML est qu'il contient éventuellement plus de métadonnées que les données réelles. En cas de fichiers CSV, les méta-données ne sont pas répétés.


0 commentaires

11
votes

J'irais pour les méthodes de lecture / écriture XML. Nous utilisons plutôt beaucoup. C'est rapide, c'est facile, il est intégré dans le cadre.


1 commentaires

Je pense que cette réponse serait beaucoup mieux si vous incluiez un échantillon de code. Vous savez peut-être utiliser les méthodes XML en lecture / écriture, et pourriez-vous donc l'auteur de la question, mais rappelez-vous que ce site est plus que d'obtenir des réponses à nos propres questions. Il s'agit de les documenter pour les autres qui rencontrent le problème. Les autres utilisateurs arrivant dans cette question peuvent ne pas savoir comment utiliser les méthodes.



0
votes

est le jeu de données un objet en mémoire? Si tel est le cas, vous pourriez simplement aller avec Serialize et désérialiser des méthodes. Ils sont relativement rapides et vous pouvez persister le résultat partout où vous voulez.


3 commentaires

Quel Serialize et DESERIALIZE Les méthodes font-t-on référence?


Vous pouvez utiliser les méthodes dans System.xml.Serialization.xmlSerializer. Je suis chez un client maintenant, mais quand j'ai un peu de temps, je vais essayer d'obtenir les exemples que j'ai. Ils sont assez simples à utiliser.


Bonjour, oui, le jeu de données est en mémoire. Je serais intéressé à vous voir le code Snippet, comme maintenant j'utilise ReadXML () et WRITXML (). Merci!



13
votes

Je pense que Silveira commentaire Utilisation moyenne de la sérialisation binaire . Et son droit que cela se comparait très rapide à XML que la sérialisation est très lente comparativement à binaire spécialement pour une grande quantité de données. En outre, il faut beaucoup moins d'espace sur le disque comparateur à XML. xxx


3 commentaires

L'un des déficits dans l'utilisation de la sérialisation binaire est que la sérialisation binaire contienne un nom de type de type d'assemblage été sérialisée, de sorte que System.Data.dll changements vous permet de lire les données du fichier binaire. Mais depuis que le jeu de données et d'autres classes de l'espace de nom font partie du cadre et que je n'aime pas changer, je ne vois donc aucun problème dans ce cas.


Je n'avais généralement que pour sérialiser de petites quantités de données, alors XmlSerializer était bien. Mais le résultat final est que nous semblons tous d'accord pour dire que la sérialisation est une bonne voie à suivre. Le bon formateur (XML, binaire, Datacontract) peut être choisi en fonction d'autres exigences (par exemple, si vous ne devez par exemple lire les données dans votre application et que vous n'avez pas besoin de l'exporter vers un autre environnement, le binaire semble le choix parfait) .


DataSet et DataTable sont convertis en XML par défaut, quel que soit le formateur utilisé (voir msdn.microsoft.com/en-us/magazine/cc163911.aspx ). Les deux ont une propriété appelée "RemotingFormat" qui doit être définie sur "SerializationFormat.binary" si vous souhaitez réduire la taille de l'objet sérialisé.



7
votes

point important:
Si vous essayez de sérialiser un fichier objet objet ou un objet objet à l'aide du formateur binaire, vous obtiendrez toujours un fichier binaire, mais c'est assez grand parce qu'il est rempli d'un tonne de données XML. Malheureusement, les données XML dans des fichiers binaires permettent aux énormes fichiers qui ne disposent pas des avantages de la portabilité et de la lisibilité que XML fournit. Par la suite, la désérialisation de tels fichiers pourrait prendre des secondes pour terminer et finir par occuper beaucoup plus de mémoire que nécessaire. En conséquence, si vous choisissez une série binaire des objets ADO.NET car vous devez obtenir une sortie plus compacte, vous échouerez . La sérialisation binaire reste l'approche la plus efficace, mais avec des objets ADO.NET, il ne s'avère pas aussi efficace que possible.

Pour une référence complète, lisez l'article suivant: -
http://msdn.microsoft.com/en-us/magazine/cc188907.aspx < / p>


1 commentaires

Bien que ce soit une belle remarque, ce n'est pas vraiment répondre à la question, + lien mort.