Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Web2py - SQLite से MySQL में माइग्रेट करना

मुझे हाल ही में एक अपाचे सर्वर पर होस्ट किए गए वेब 2py-आधारित सीआरएम ऐप को SQLite बैकएंड के साथ MySQL में कनवर्ट करने की आवश्यकता है। नीचे दिए गए कदम हैं जो मेरे लिए काम करते हैं। मैंने काम करने के लिए एक नमूना एप्लिकेशन बनाया है यदि आप साथ चलना चाहते हैं, तो आप यहां सभी फाइलें डाउनलोड कर सकते हैं।

<ब्लॉककोट>

कृपया ध्यान दें:मैं यूनिक्स वातावरण पर web2py संस्करण 2.4.7 का उपयोग कर रहा हूं। शुरू करने से पहले, सुनिश्चित करें कि आपके सिस्टम पर SQLite स्थापित है। आप इसे पाइप के साथ स्थापित कर सकते हैं, pip install sqlite , या आप http://sqlite.org/download.html पर बाइनरी फ़ाइलें ले सकते हैं। आपको MySQL स्थापित करने की भी आवश्यकता है। यदि आपको सहायता की आवश्यकता है, तो यहां ट्यूटोरियल का अनुसरण करें।

वर्तमान डेटाबेस में सभी डिफ़ॉल्ट web2py तालिकाओं के साथ-साथ उपयोगकर्ता . भी हैं फ़ील्ड के साथ तालिका आईडी , प्रारंभ_दिनांक , और end_date :

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

यह कोड web2py DAL सिंटैक्स का अनुसरण करता है। तालिका में डेटा की 30,000 पंक्तियाँ हैं।


डेटा साफ़ करें

अपने एप्लिकेशन का नवीनतम SQLite डेटाबेस डाउनलोड करें। डिफ़ॉल्ट रूप से, यह storage.sqlite . नाम की फ़ाइल है "/web2py/applications//databases/" फ़ोल्डर के अंतर्गत। डाउनलोड करने के लिए, टर्मिनल में निम्न कमांड चलाकर डेटाबेस डंप बनाएं:

$ sqlite3 storage.sqlite .dump > output_before.sql

टेक्स्ट एडिटर का उपयोग करके, output_before.sql संपादित करें फ़ाइल:

  • उन सभी पंक्तियों को हटा दें जो PRAGMA से शुरू होती हैं , BEGIN TRANSACTION , CREATE TABLE और COMMIT
  • sqlite_sequence . से संबंधित सभी पंक्तियों को हटा दें तालिका (यानी, DELETE FROM sqlite_sequence; )।
  • सभी के लिए INSERT INTO "<table_name>" VALUES(...) में डालें कथन, दोहरे उद्धरण चिह्नों को बदलें (" " ) <table_name> . के पहले और बाद में बैकटिक्स के साथ (` ` ) - जैसे INSERT INTO `table_name` VALUES(...) . में डालें ।

अंत में, फ़ाइल को output_after.sql के रूप में सहेजें अपने डेस्कटॉप पर।



MySQL सेटअप

दूरस्थ सर्वर पर MySQL डेटाबेस बनाएँ। डेटाबेस का नाम, उपयोगकर्ता नाम और पासवर्ड नोट करें। आप परीक्षण के लिए अपने डेटाबेस को स्थानीय रूप से भी सेट कर सकते हैं, जिसका उपयोग मैं इस ट्यूटोरियल के लिए करूँगा:

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

MySQL का उपयोग करने के लिए अपने एप्लिकेशन को कॉन्फ़िगर करें। अपना web2py व्यवस्थापक लॉन्च करें। संपादित करें db.py :

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

फ़ाइल सहेजें।

web2py को MySQL डेटाबेस को इनिशियलाइज़ करने की अनुमति दें:

  • /web2py/applications/<your_application>/databases/ की सामग्री का बैकअप लें फ़ोल्डर। फिर फ़ोल्डर की सामग्री को हटा दें।
  • web2py व्यवस्थापक पर वापस जाएं। अपने स्थानीय MySQL डेटाबेस में टेबल बनाने के लिए "डेटाबेस व्यवस्थापन" बटन पर क्लिक करें।

यह सुनिश्चित करने के लिए कि डेटाबेस में खाली तालिकाएँ जोड़ी गई हैं, टर्मिनल में अपने MySQL डेटाबेस को सक्रिय करें:



डेटा जोड़ें

नेविगेट करें कि आपने output.sql को कहाँ सहेजा है (आपका डेस्कटॉप होना चाहिए), फिर MySQL में डेटा जोड़ने के लिए निम्न कमांड चलाएँ:

$ mysql -u root migration < output_after.sql

इसे पूरी तरह से निष्पादित होने में कुछ मिनट लगेंगे।

web2py व्यवस्थापक के भीतर, यह सुनिश्चित करने के लिए कि नया डेटा पहुंच योग्य है, अपने डेटाबेस और एप्लिकेशन की जांच करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySqlCommand Command.Parameters.Add अप्रचलित है

  2. मैं MySQL उपयोगकर्ता नाम और पासवर्ड को डीकंपलिंग से कैसे बचा सकता हूं?

  3. आईफोन डिवाइस के टाइम ज़ोन में समय कैसे बदलें?

  4. एकाधिक जॉइन करते समय tmp तालिका के लिए MySQL गलत कुंजी फ़ाइल

  5. MySQL में ibdata1 फ़ाइल को कैसे सिकोड़ें/शुद्ध करें?