web-dev-qa-db-fra.com

Réimportation d'un vidage SQLite3 dans la base de données

J'ai l'impression que c'est une question stupide car cela semble être du bon sens. . . mais aucune recherche google que je peux mettre en place ne semble pouvoir me donner la réponse!

Je sais comment extraire des données d'une base de données sqlite3 à l'aide de la commande .dump. Mais maintenant que j'ai ce fichier ASCII intitulé export.sqlite3.sql ... Je n'arrive pas à le récupérer dans la base de données que je veux.

Mon objectif était de transférer les données que j'avais dans une application Rails vers une autre afin de ne pas avoir à prendre toutes sortes de temps pour recréer des données factices ... alors j'ai vidé les données de mon la première application, s'est débarrassée de toutes les instructions CREATE TABLE et s'est assurée que mon schéma sur ma deuxième application correspond ... maintenant, je n'ai plus qu'à l'y mettre.

Quelqu'un voudrait-il m'aider? Et quand vous trouverez un moyen, allez-vous me dire ce que vous avez branché sur Google, car je me tape la tête ouverte avec une cuillère en ce moment sur ce que je pensais être une trouvaille facile.

39
BushyMark
cat dumpfile.sql | sqlite3 my_database.sqlite

Ceci est modifié à partir du guide de démarrage sqlite3.

62
Ali Afshar

Vous n'avez pas spécifié votre système d'exploitation et pendant

sqlite3 my_database.sqlite < export.sqlite3.sql

fonctionnera pour les saveurs unix, il ne fonctionnera pas pour les fenêtres.

L'inverse de la commande .dump est la commande .read. La syntaxe serait

sqlite3> .read export.sqlite3.sql
49
Noah

Cela devrait également fonctionner:

echo '.read export.sqlite3.sql' | sqlite3 my_database.sqlite3

Un avantage possible par rapport à "sqlite3 my_database.sqlite3 < export.sqlite3.sql" Est que la commande .read De SQLite pourrait (maintenant ou à l'avenir) être plus avancée que simplement "lire tout le texte et l'exécuter". Il pourrait effectuer un traitement par lots, ce qui réduirait l'utilisation de la mémoire pour les grands vidages. J'avoue, cependant, que c'est un avantage assez obscur et peu probable. Selon toute vraisemblance, .read Lit simplement chaque ligne de l'entrée et l'exécute, tout comme les opérateurs de redirection et de pipe.

2
James A. Rosen