2008-08-01 36 views
79

पर डेटा निर्यात करने के लिए कैसे मैं SQL Server 2005 के खिलाफ अपने सिर को बहुत अधिक डेटा प्राप्त करने की कोशिश कर रहा हूं। मुझे इसमें लगभग 300 टेबल के साथ डेटाबेस दिया गया है और मुझे इसे एक MySQL डेटाबेस में बदलने की आवश्यकता है। मेरा पहला कॉल बीसीपी का उपयोग करना था, लेकिन दुर्भाग्य से यह वैध सीएसवी का उत्पादन नहीं करता है - स्ट्रिंग्स को एन्सेप्लेटेड नहीं किया जाता है, इसलिए आप किसी भी पंक्ति से निपट नहीं सकते हैं जिसमें इसमें कॉमा के साथ स्ट्रिंग है (या जो भी आप डिलीमीटर के रूप में उपयोग करते हैं) और मुझे अभी भी सभी निर्माण तालिका विवरण लिखना होगा, क्योंकि स्पष्ट रूप से सीएसवी आपको डेटा प्रकारों के बारे में कुछ नहीं बताता है।SQL सर्वर 2005 से MySQL

बेहतर होगा अगर कुछ उपकरण जो SQL सर्वर और MySQL दोनों से कनेक्ट हो, तो एक प्रतिलिपि करें। आप विचार, संग्रहित प्रक्रियाओं, ट्रिगर इत्यादि खो देते हैं, लेकिन ऐसी तालिका की प्रतिलिपि बनाना मुश्किल नहीं है जो केवल एक डीबी से दूसरे प्रकार के आधार प्रकारों का उपयोग करता है ... है ना?

क्या कोई इस तरह के उपकरण के बारे में जानता है? मुझे कोई फर्क नहीं पड़ता कि यह कितनी धारणा बनाता है या कौन सा सरलीकरण होता है, जब तक यह पूर्णांक, फ्लोट, डेटाटाइम और स्ट्रिंग का समर्थन करता है। मुझे वैसे भी बहुत सारे छंटनी, सामान्यीकरण आदि करना है, इसलिए मुझे चाबियाँ, रिश्तों या इस तरह की कुछ भी रखने की परवाह नहीं है, लेकिन मुझे तेजी से डेटा के प्रारंभिक सेट की आवश्यकता है!

+1

मैंने सुना है कि SQLYob इसे कर सकता है। यहां: borjab

+1

मैंने कुछ लोगों को सुना है सफलता के साथ [MSSQL2MySQL] (http://www.kofler.cc/mysql/mssql2mysql.html) का उपयोग करके, लेकिन मैं इसे स्वयं के लिए झुका नहीं सकता। –

+0

यह टूल वही है जो आपने पूछा था: [पूर्ण कनवर्ट एंटरप्राइज़] (http://www.spectralcore.com/fullconvert/)। सच है, आप विचार, प्रक्रियाओं और ट्रिगर खो देते हैं, लेकिन यह विशाल तालिकाओं के लिए अत्यधिक अनुकूलित है। एक अन्य समाधान (अधिक महंगा) जो सभी ऑब्जेक्ट्स (प्रक्रियाओं इत्यादि) का अनुवाद करता है [SqlTran SQL सर्वर MySQL] है (http://www.sqltran.com/sql-server-to-mysql/) –

उत्तर

7

अपना स्वयं का PHP समाधान रोलिंग निश्चित रूप से काम करेगा हालांकि मुझे यकीन नहीं है कि स्कीमा को स्वचालित रूप से एक डीबी से दूसरे में डुप्लिकेट करने का कोई अच्छा तरीका है (शायद यह आपका प्रश्न था)।

यदि आप केवल डेटा कॉपी कर रहे हैं, और/या आपको दो डीबी के बीच संशोधित स्कीमा के बीच कनवर्ट करने के लिए कस्टम कोड की आवश्यकता है, तो मैं PHP 5.2+ और पीडीओ पुस्तकालयों का उपयोग करने की अनुशंसा करता हूं। आप पीडीओ ओडीबीसी (और एमएसएसक्यूएल ड्राइवरों का उपयोग) का उपयोग कर कनेक्ट करने में सक्षम होंगे। मुझे अन्य पुस्तकालयों का उपयोग करके बड़े टेक्स्ट फ़ील्ड्स और बहु-बाइट वर्णों को एमएसएसक्यूएल से PHP में प्राप्त करने में बहुत सारी समस्याएं थीं।

5

कोशिश करने का एक और टूल SQLMaestro सूट होगा - http://www.sqlmaestro.com यह सटीक टूल के नीचे थोड़ा मुश्किल है, लेकिन उनके पास कई प्रकार के टूल्स हैं, दोनों मुफ्त और खरीदारी के लिए जो कई डेटाबेस प्लेटफ़ॉर्म के लिए विभिन्न प्रकार के कार्यों को संभालते हैं । मैं पहले MySQL के लिए डेटा विज़ार्ड टूल को आजमाने का सुझाव दूंगा, क्योंकि मेरा मानना ​​है कि आपके पास उचित "आयात" टूल होगा।

58

मुझे मिला है सबसे अच्छा तरीका MySQL Migration Toolkit MySQL द्वारा प्रदान किया गया है। मैंने कुछ बड़ी माइग्रेशन परियोजनाओं के लिए इसे सफलतापूर्वक उपयोग किया है।

+2

+1 - अब यह ईओएल है, और MySQL वर्कबेंच में माइग्रेशन प्लगइन (पिछले संस्करण 5.2) शामिल करने जा रहा है लेकिन अब निम्न लिंक का उपयोग करें: http://dev.mysql.com/downloads/gui-tools/5.0। एचटीएमएल –

+0

DATE या DATETIME कॉलम को कनवर्ट नहीं करना चाहता :( –

+1

नोट: वर्तमान में, MySQL माइग्रेशन टूलकिट लिनक्स के लिए उपलब्ध नहीं है (http://dev.mysql.com/doc/migration-toolkit/en/gui- टूल्स-इंस्टॉलेशन-linux.html) – mkirk

8

एसक्यूएल सर्वर 2005 "मानक", "डेवलपर" और "एंटरप्राइज़" संस्करणों में SSIS है, जो एसक्यूएल सर्वर 2000 से डीटीएस को प्रतिस्थापित करता है। एसएसआईएस अपने स्वयं के डीबी के संबंध में बनाया गया है, और आप एक कनेक्शन ढूंढ सकते हैं जो किसी और को MySQL के लिए लिखा है। Here एक उदाहरण है। एक बार आपके कनेक्शन होने के बाद, आपको एक एसएसआईएस पैकेज बनाने में सक्षम होना चाहिए जो दोनों के बीच डेटा ले जाता है।

मुझे SQlServer से MySQL तक डेटा स्थानांतरित नहीं करना पड़ा है, लेकिन मुझे लगता है कि एक बार MySQL कनेक्शन स्थापित हो जाने पर, यह दो SQLServer DBs के बीच डेटा को स्थानांतरित करने जैसा ही काम करता है, जो कि बहुत सीधे आगे है।

8

एमएसएसएलएल प्रबंधन स्टूडियो का उपयोग करके मैंने MySQL OLE DB के साथ तालिकाओं को स्थानांतरित कर दिया है। अपने डेटाबेस पर राइट क्लिक करें और वहां से "कार्य-> निर्यात डेटा" पर जाएं, आप एक एमएसएसक्यूएल ओएलई डीबी स्रोत, MySQL ओएलई डीबी स्रोत निर्दिष्ट कर सकते हैं और दो डेटा स्रोतों के बीच कॉलम मैपिंग बना सकते हैं।

आप शायद MySQL गंतव्य पर डेटाबेस और टेबल को पहले से सेट करना चाहते हैं (निर्यात स्वचालित रूप से टेबल बनाना चाहता है, लेकिन यह अक्सर विफलता में परिणाम देता है)। डेटाबेस पर राइट क्लिक करके आप "कार्य-> जेनरेट स्क्रिप्ट" का उपयोग करके MySQL में टेबल को जल्दी से बना सकते हैं। एक बार आपकी सृजन स्क्रिप्ट उत्पन्न हो जाने के बाद आपको MSSQL में MYSQL में मौजूद कीवर्ड और प्रकारों के लिए कदम उठाने और खोजना होगा।

बेशक आप सामान्य रूप से डेटाबेस का बैकअप भी ले सकते हैं और उपयोगिता ढूंढ सकते हैं जो MYSQL पर MSSQL बैकअप को पुनर्स्थापित करेगा। मुझे यकीन नहीं है कि कोई मौजूद है या नहीं।