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

MySQL आयात का अनुकूलन (एक वर्बोज़ एसक्यूएल डंप को एक त्वरित एक में कनवर्ट करना / विस्तारित-आवेषण का उपयोग करें)

मैंने एक छोटी पायथन लिपि लिखी है जो इसे रूपांतरित करती है:

LOCK TABLES `actor` WRITE;
/*!40000 ALTER TABLE `actor` DISABLE KEYS */;
INSERT INTO `actor` (`actor_id`, `first_name`, `last_name`, `last_update`) VALUES (1,'PENELOPE','GUINESS','2006-02-15 12:34:33');
INSERT INTO `actor` (`actor_id`, `first_name`, `last_name`, `last_update`) VALUES (2,'NICK','WAHLBERG','2006-02-15 12:34:33');
INSERT INTO `actor` (`actor_id`, `first_name`, `last_name`, `last_update`) VALUES (3,'ED','CHASE','2006-02-15 12:34:33');

इसमें:

LOCK TABLES `actor` WRITE;
/*!40000 ALTER TABLE `actor` DISABLE KEYS */;
INSERT INTO `actor` VALUES(1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),(2,'NICK','WAHLBERG','2006-02-15 12:34:33'),(3,'ED','CHASE','2006-02-15 12:34:33');

यह बहुत सुंदर या अच्छी तरह से परीक्षण नहीं किया गया है, लेकिन यह सकिला परीक्षण डेटाबेस डंप , इसलिए यह गैर-तुच्छ डंप फ़ाइलों को संभाल सकता है।

वैसे भी, ये रही स्क्रिप्ट:

#!/usr/bin/env python
# -*- coding: utf-8 -*- #

import re
import sys

re_insert = re.compile(r'^insert into `(.*)` \(.*\) values (.*);', re.IGNORECASE)

current_table = ''

for line in sys.stdin:
    if line.startswith('INSERT INTO'):
        m = re_insert.match(line)
        table = m.group(1)
        values = m.group(2)

        if table != current_table:
            if current_table != '':
                sys.stdout.write(";\n\n")
            current_table = table
            sys.stdout.write('INSERT INTO `' + table + '` VALUES ' + values)
        else:
            sys.stdout.write(',' + values)
    else:
        if current_table != '':
            sys.stdout.write(";\n")
            current_table = ''
        sys.stdout.write(line)

if current_table != '':
    sys.stdout.write(';')

यह स्टड पर पाइप्ड इनपुट की अपेक्षा करता है और स्टडआउट को प्रिंट करता है। यदि आपने स्क्रिप्ट को mysqldump-convert.py . के रूप में सहेजा है , आप इसे इस तरह इस्तेमाल करेंगे:

cat ./sakila-db/sakila-full-dump.sql | python mysqldump-convert.py > test.sql

मुझे बताएं कि आप कैसे आगे बढ़ते हैं!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql एक ही पंक्ति में कई पंक्तियों को स्तंभों में परिवर्तित कर रहा है

  2. मैं किसी वेबसाइट से आईपी ब्लॉक को प्रतिबंधित करने के लिए PHP/MySQL-आधारित स्क्रिप्ट का उपयोग कैसे करूं?

  3. क्या एसक्यूएल इंजेक्शन को सिर्फ एडलाश (स्ट्रिंग) से रोका जा सकता है?

  4. html एक mysql क्वेरी के बाद खाली टैग लौटाकर आकार में तिगुना हो जाता है | कैसे हल करें - लार्वा

  5. mysql अवधि और लाने का समय