sql >> Database >  >> RDS >> Mysql

Web2py – Migreren van SQLite naar MySQL

Ik moest onlangs een op web2py gebaseerde CRM-app die wordt gehost op een Apache-server met een SQLite-backend naar MySQL converteren. Hieronder staan ​​​​de stappen die voor mij hebben gewerkt. Ik heb een voorbeeldtoepassing gemaakt om mee te werken. Als je wilt volgen, kun je hier alle bestanden downloaden.

Let op:ik gebruik web2py versie 2.4.7 in een Unix-omgeving. Voordat u begint, moet u ervoor zorgen dat SQLite op uw systeem is geïnstalleerd. Je kunt dit installeren met pip, pip install sqlite , of je kunt de binaire bestanden pakken op http://sqlite.org/download.html. Je moet ook MySQL geïnstalleerd hebben. Als je hulp nodig hebt, volg dan de tutorials hier.

De huidige database heeft alle standaard web2py-tabellen en een gebruikers tabel met de velden id , startdatum , en einddatum :

db.define_table(
    'users',
    Field('start_date','string'), 
    Field('end_date','string')
)

Deze code volgt de web2py DAL-syntaxis. De tabel bevat 30.000 rijen met gegevens.


Gegevens opschonen

Download de nieuwste SQLite-database van uw toepassing. Standaard is dit het bestand met de naam storage.sqlite onder de map "/web2py/applications//databases/". Om te downloaden, maakt u een databasedump aan door de volgende opdracht in de terminal uit te voeren:

$ sqlite3 storage.sqlite .dump > output_before.sql

Bewerk met een teksteditor de output_before.sql bestand:

  • Verwijder alle regels die beginnen met PRAGMA , BEGIN TRANSACTION , CREATE TABLE en COMMIT .
  • Verwijder alle regels die betrekking hebben op de sqlite_sequence tabel (d.w.z. DELETE FROM sqlite_sequence; ).
  • Voor alle INSERT INTO "<table_name>" VALUES(...) instructies, vervang dan de dubbele aanhalingstekens (" " ) voor en na de <table_name> met backticks (` ` ) - bijv. INSERT INTO `table_name` VALUES(...) .

Sla ten slotte het bestand op als output_after.sql op uw bureaublad.



MySQL-configuratie

Maak de MySQL-database op de externe server. Noteer de databasenaam, gebruikersnaam en wachtwoord. Je kunt je database ook lokaal instellen om te testen, wat ik voor deze tutorial zal gebruiken:

$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;

Configureer uw applicatie om MySQL te gebruiken. Start uw web2py-beheerder. Bewerk db.py :

db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')

Sla het bestand op.

Sta web2py toe om de MySQL-database te initialiseren:

  • Maak een back-up van de inhoud van /web2py/applications/<your_application>/databases/ map. Verwijder vervolgens de inhoud van de map.
  • Terug op de web2py-beheerder. Klik op de knop "databasebeheer" om de tabellen in uw lokale MySQL-database te maken.

Start uw MySQL-database in de terminal om te controleren of de lege tabellen aan de database zijn toegevoegd:



Gegevens toevoegen

Navigeer naar waar u output.sql heeft opgeslagen (moet uw bureaublad zijn), voer vervolgens de volgende opdracht uit om gegevens aan MySQL toe te voegen:

$ mysql -u root migration < output_after.sql

Dit duurt een paar minuten om volledig uit te voeren.

Controleer in de web2py-beheerder uw database en applicatie om er zeker van te zijn dat de nieuwe gegevens toegankelijk zijn.



  1. Hoe praat Access met ODBC-gegevensbronnen? Deel 1

  2. Het prestatieafstemmingsdoolhof

  3. Krijg het aantal records beïnvloed door INSERT of UPDATE in PostgreSQL

  4. Oracle SQL-uren Verschil tussen datums in UU:MM:SS