2010-01-28 14 views
3

J'ai essayé de passer des DB SQLite binaires sur le réseau entre différents systèmes d'exploitation et architectures - cela n'a pas fonctionné.Est-ce que SQLite a un format de fichier portable de machine que l'API C peut lire/écrire?

Quel format utilisez-vous tous? J'ai essayé un hack impur de copier le shell.c de SQLite et d'appeler shell_main() avec un argc piraté, argv, stdin avec succès sur Mac. Dommage que je développe pour l'iPhone et il échoue seulement là.

Est-ce que tout le monde fait des choses aussi horribles?

Répondre

5

Ceci est l'une des principales fonctionnalités de SQLite.

Base de données multiplateforme stable fichier

Le format de fichier SQLite est multi-plateforme. Un fichier de base de données écrit sur une machine peut être copié et utilisé sur une machine différente avec une architecture différente. Big-endian ou little-endian, 32 bits ou 64 bits n'a pas d'importance. Toutes les machines utilisent le même format de fichier. De plus, les développeurs se sont engagés à garder le format de fichier stable et rétrocompatible, de sorte que les nouvelles versions de SQLite peuvent lire et écrire des fichiers de base de données plus anciens.

La plupart des autres moteurs de base de données SQL nécessitent le vidage et la restauration de la base de données lors du passage d'une plate-forme à une autre et souvent lors de la mise à niveau vers une version plus récente du logiciel.

http://sqlite.org/different.html

Vérifiez le code qui est le passage des bases de données. Faites une comparaison octet par octet pour vous assurer qu'ils sont égaux après le transfert. Cela devrait certainement fonctionner.

Beyond Compare a un bon support de comparaison de fichiers binaires.

+1

Vous avez raison Sam. Nos tests ont été effectués par le simple fait que, en cours de route, un putt ascii ftp a été utilisé. Passer à binaire tout résolu. Annoying que les en-têtes ont été préservés par un ftp ascii mis mais la structure de données/table, moins! – gavinbeatty