मैंने एक छोटी पायथन लिपि लिखी है जो इसे रूपांतरित करती है:
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
मुझे बताएं कि आप कैसे आगे बढ़ते हैं!