2008-10-01 10 views
52

शीर्षक स्वयं व्याख्यात्मक है। क्या इस तरह के आयात करने का कोई तरीका है?MySQL में SQL सर्वर .bak फ़ाइल कैसे आयात करें?

+3

भी [dba.stackexchange पर कवर किया गया] (http://dba.stackexchange.com/q/20078/1580) –

+0

महाकाव्य प्रश्न भाई! मैं finaly मेरे क्रैपी होस्टिंग प्रदाता से बाक फ़ाइल आयात करने में कामयाब रहे जहां सभी एसक्यूएल उपकरण टूटा गया था। – ppumkin

उत्तर

58

एसक्यूएल सर्वर से .bak फ़ाइलों माइक्रोसॉफ्ट टेप प्रारूप (MTF) रेफरी में हैं: http://www.fpns.net/willy/msbackup.htm

बक फ़ाइल शायद एलडीएफ होते हैं और MDF फ़ाइलें कि SQL सर्वर डेटाबेस दुकान का उपयोग करता होगा।

आपको इन्हें निकालने के लिए SQL सर्वर का उपयोग करने की आवश्यकता होगी। एसक्यूएल सर्वर एक्सप्रेस मुफ्त है और नौकरी करेगा।

तो, SQL सर्वर एक्सप्रेस संस्करण स्थापित करें, और SQL सर्वर पावरहेल खोलें। वहां sqlcmd -S <COMPUTERNAME>\SQLExpress निष्पादित करें (व्यवस्थापक के रूप में लॉग इन होने पर)

फिर निम्न आदेश जारी करें। आपको क्या चाहिए पहले आप जो फ़ील्ड तार्किक नाम बता है - -

restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak'; 
GO 

यह बैकअप की सामग्री को सूचीबद्ध करेगा एक वास्तविक डेटाबेस और अन्य लॉग फ़ाइल हो जाएगा।

RESTORE DATABASE mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.bak' 
WITH 
    MOVE 'mydbName' TO 'c:\temp\mydbName_data.mdf', 
    MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf'; 
GO 

इस बिंदु आप डेटाबेस निकाला है पर - तो Microsoft's "Sql Web Data Administrator". एक साथ this export tool साथ स्थापित करें और आप एक SQL स्क्रिप्ट है कि डेटाबेस में शामिल करना होगा।

+1

धन्यवाद रिचर्ड! मुझे एक जाम से बाहर मिला। –

+3

समस्या यह है कि SQL Server 2008 एक्सप्रेस संस्करण केवल डेटाबेस फ़ाइलों को संभाल सकता है जो 10GB और छोटे हैं। मेरे पास 30 जीबी फाइल है जिसके साथ मुझे काम करना है। काम पर इंटरनेट कनेक्शन पूर्ण SQL Server 2008 R2 संस्करण की 4 जीबी .iso छवि को डाउनलोड करने में बहुत धीमा है, जिसे मैं छात्र के रूप में dreamspark.com से मुक्त करता हूं। तो मेरे पास यह वही सवाल है। – systemovich

+0

पहला इंस्टॉल सॉफ़्टवेयर लिंक टूटा हुआ है –

2

हालांकि मेरी MySQL पृष्ठभूमि सीमित है, मुझे नहीं लगता कि आपको ऐसा करने में बहुत भाग्य है। हालांकि, आप किसी भी एमएसएसएलएल सर्वर पर डीबी को पुनर्स्थापित करके अपने सभी डेटा पर माइग्रेट करने में सक्षम होना चाहिए, फिर अपने टेबल और डेटा को MySQL सर्वर पर भेजने के लिए एक एसएसआईएस या डीटीएस पैकेज बनाना।

उम्मीद है कि यह

0

मुझे अत्यधिक संदेह है। लेवी कहते हैं कि आप ऐसा करने के लिए डीटीएस/एसएसआईएस का उपयोग करना चाहेंगे। एक ऐसा लगता है कि आप वास्तव में डेटा आयात किए बिना प्रक्रिया शुरू कर सकते हैं। बुनियादी तालिका संरचनाओं को एक साथ पाने के लिए बस पर्याप्त करें। फिर आप परिणामी तालिका संरचना के चारों ओर बदलना चाहते हैं, क्योंकि जो भी संरचना टैट संभवतः बनाई जाएगी, वह सबसे अच्छा होगा।

आपको इसे एक कदम आगे ले जाना पड़ सकता है और एक स्टेजिंग क्षेत्र बनाना पड़ता है जो पहले सभी स्ट्रिंग (वर्कर) रूप में होता है। फिर आप एक स्क्रिप्ट बना सकते हैं जो इसे "असली" डेटाबेस में लाने के लिए सत्यापन और रूपांतरण करता है, क्योंकि दो डेटाबेस हमेशा अच्छी तरह से काम नहीं करते हैं, खासकर जब तिथियों से निपटते हैं।

0

SQL सर्वर डेटाबेस बहुत ही माइक्रोसॉफ्ट स्वामित्व हैं। दो विकल्प मैं सोच सकता हूं:

  1. सीएसवी, एक्सएमएल या इसी तरह के प्रारूप में डेटाबेस को डंप करें जिसे आप फिर MySQL में लोड करेंगे।

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

+0

यदि मैं .sql प्रारूप में डंप तैयार करता हूं तो यह काम करेगा !! – sandeep

8

मुझे इसे सीधे करने का कोई तरीका नहीं मिला।

इसके बजाय मैंने SQL सर्वर 2008 एक्सप्रेस में बाक फ़ाइल आयात की, और फिर MySQL Migration Toolkit का उपयोग किया।

एक आकर्षण की तरह काम किया!

+0

हां आयात मेरे लिए ठीक काम करता है। 'डेटाबेस' नोड पर राइट क्लिक करें आयात पर क्लिक करें- पहले बीएके फ़ाइल का चयन करें, फिर डेटाबेस चुनें - यह स्वचालित रूप से लोड की गई .bak फ़ाइल से डेटाबेस नाम प्राप्त करता है और इसे सूची में डालता है। (नया डेटाबेस बनाने के लिए) इसे चुनें और क्लिक करें आयात .. वाहू - 6 दिन बाद! – ppumkin

+0

MySQL माइग्रेशन टूलकिट ईओएल तक पहुंच गया है। http://dev.mysql.com/downloads/gui-tools/5.0.html – Jakob

+1

'डेटाबेस माइग्रेशन' कार्यक्षमता अब [MySQL वर्कबेंच] का हिस्सा है (http://dev.mysql.com/downloads/tools/ वर्कबेंच /) – dazweeja

0

विधि मैं रिचर्ड हैरिसन की विधि के शामिल हिस्सा इस्तेमाल किया:,

इस वेब प्लेटफार्म इंस्टालर के डाउनलोड की आवश्यकता है

तो, स्थापित एसक्यूएल सर्वर 2008 एक्सप्रेस संस्करण "wpilauncher_n.exe " एक बार जब आप इसे स्थापित कर लेंगे तो डेटाबेस चयन पर क्लिक करें (आपको फ्रेमवर्क और रनटाइम्स डाउनलोड करने की भी आवश्यकता है)

इंस्टालेशन के बाद टी पर जाएं वह खिड़कियों शीघ्र आदेश जारी:

उपयोग एस \ SQLExpress sqlcmd (जबकि व्यवस्थापक के रूप में लॉग-इन)

तो निम्न आदेश जारी करते हैं।

डिस्क = 'c: \ temp \ mydbName-2009-09-29-v10.bak' से फ़ाइलसूची को पुनर्स्थापित करें; जाओ यह बैकअप की सामग्री सूचीबद्ध करेगा - आपको पहले फ़ील्ड्स की आवश्यकता है जो आपको तार्किक नाम बताएंगे - एक वास्तविक डेटाबेस और अन्य लॉग फ़ाइल होगी। चाल 'mydbName' के लिए 'c: \ अस्थायी \ mydbName_data.mdf' के साथ, चाल ':

डिस्क =' \ अस्थायी \ mydbName-2009-09-29-v10.bak सी 'डेटाबेस से mydbName पुनर्स्थापित mydbName_log 'से ' c: \ temp \ mydbName_data.ldf '; GO

मैं वेब प्लेटफ़ॉर्म इंस्टालर ऊपर निकाल दिया और क्या नए टैब से मैं एसक्यूएल सर्वर प्रबंधन स्टूडियो स्थापित किया है और db सुनिश्चित करें कि डेटा नहीं था बनाने के लिए ...

ब्राउज़ किए गए उस समय मैं उपकरण की कोशिश की एमएसएसक्यूएल "एसक्यूएल आयात और निर्यात विज़ार्ड" के साथ शामिल है लेकिन सीएसवी डंप के परिणाम में केवल कॉलम नाम शामिल हैं ...

तो इसके बजाय मैंने SQL सर्वर प्रबंधन स्टूडियो से "उपयोगकर्ताओं से चयन करें" जैसे प्रश्नों के परिणाम निर्यात किए

0

रिचर्ड के समाधान की कोशिश करने वालों के लिए बोव, यहां कुछ अतिरिक्त जानकारी दी गई हैं जो सामान्य त्रुटियों को नेविगेट करने में मदद कर सकती हैं:

1) फ़ाइलसूची को पुनर्स्थापित करते समय आप ऑपरेटिंग सिस्टम त्रुटि 5 प्राप्त कर सकते हैं (एक्सेस अस्वीकार कर दी गई है)। यदि ऐसा है, तो SQL सर्वर कॉन्फ़िगरेशन प्रबंधक खोलें और SQLEXPRESS के लिए लॉगिन उस उपयोगकर्ता को बदलें जिसमें स्थानीय लेखन विशेषाधिकार हैं।

2) @ "यह बैकअप की सामग्री सूचीबद्ध करेगा - आपको जो फ़ील्ड चाहिए वह पहला फ़ील्ड है जो आपको तार्किक नाम बताता है" - यदि आपकी फ़ाइल में दो से अधिक शीर्षलेख सूचीबद्ध हैं तो आपको यह भी करना होगा कि क्या करना है रीस्टोर डाटाबेस कमांड में उन फ़ाइलों के साथ। यदि आप इंगित नहीं करते हैं कि डेटाबेस और लॉग से परे फ़ाइलों के साथ क्या करना है, तो सिस्टम स्पष्ट रूप से .bak फ़ाइल में सूचीबद्ध विशेषताओं का उपयोग करने का प्रयास करेगा। किसी और के पर्यावरण से किसी फ़ाइल को पुनर्स्थापित करने से 'पथ में अमान्य विशेषताएँ उत्पन्न होंगी। इसे एक निर्देशिका होना चाहिए '(क्योंकि प्रश्न में पथ आपकी मशीन पर मौजूद नहीं है)। बस एक MOVE कथन प्रदान करने से यह समस्या हल हो जाती है।

मेरे मामले में तीसरी FTData प्रकार फ़ाइल थी।MOVE कमांड मैंने जोड़ा:

MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf', 
MOVE 'sysft_...' TO 'c:\temp\other'; 

मेरे मामले में मुझे वास्तव में तीसरी फ़ाइल के लिए एक नई निर्देशिका बनाना पड़ा। प्रारंभ में मैंने इसे .mdf फ़ाइल के समान फ़ोल्डर में भेजने की कोशिश की, लेकिन जब मैंने पुनर्स्थापना निष्पादित की तो तीसरी FTData फ़ाइल पर 'सही ढंग से प्रारंभ करने में विफल' त्रुटि उत्पन्न हुई।

3
  1. अपनी स्थानीय मशीन पर SQL सर्वर प्रबंधन स्टूडियो खोलें।
  2. डेटाबेस फ़ोल्डर पर राइट क्लिक करें। पॉप-अप मेनू से, नया डेटाबेस चुनें।
  3. डेटाबेस नाम दर्ज करें, और उसके बाद ठीक क्लिक करें।
  4. नया डेटाबेस आइकन राइट क्लिक करें। पॉप-अप मेनू से, कार्य का चयन करें -> पुनर्स्थापित करें -> डेटाबेस।
  5. डिवाइस से विकल्प का चयन करें, और फिर ब्राउज़ बटन पर क्लिक करें।
  6. उचित फ़ाइल में जोड़ें और नेविगेट करें पर क्लिक करें। ओके पर क्लिक करें।
  7. पुनर्स्थापित डेटाबेस विंडो में, अपनी बीएके फ़ाइल के बगल में स्थित चेकबॉक्स का चयन करें।
  8. विकल्प पृष्ठ पर स्विच करें। मौजूदा डेटाबेस चेकबॉक्स को ओवरराइट करें का चयन करें। ठीक क्लिक करें।
  9. अपने डेटाबेस की सामग्री सत्यापित करें, जो अब आपकी स्थानीय मशीन पर सक्रिय है।
+0

बिल्कुल सही - यह मेरे लिए काम करता है। अगले (10 वें) चरण के लिए मैंने "आयात और निर्यात डेटा" प्रोग्राम का उपयोग किया जो SQL एक्सप्रेस के साथ स्थापित होता है। यह एक्सेल को निर्यात नहीं कर सका, लेकिन सीएसवी ठीक था। – Ben

+6

कृपया प्रश्न को ध्यान से पढ़ें और फिर उत्तर दें। उन्होंने एसक्यूएल सर्वर से एसक्यूएल सर्वर को एसक्यूएल सर्वर से एसक्यूएल सर्वर में लिखा था " – logcat

6

MySQL के पास माइक्रोसॉफ्ट एसक्यूएल से डीबी आयात करने के लिए एक आवेदन है। कदम:

  1. ओपन MySQL कार्यक्षेत्र पर "डेटाबेस प्रवासन"
  2. क्लिक करें
  3. सरल विज़ार्ड का उपयोग कर प्रवासन कार्य सूची का पालन करें (अगर यह नहीं दिखाई देते हैं आप MySql अद्यतन से इसे स्थापित किया है)।
+2

माईएसक्ल वर्कबेंच बेकार है। यह माईएसक्यूएल वर्कबेंच के साथ कोई समस्या दिखाई देने पर चरित्र एन्कोडिंग को पर्याप्त रूप से – Xiao

+9

@ सेन को संभाल नहीं सकता है, फिर एक बग रिपोर्ट दर्ज करें। माइग्रेशन एक जटिल मामला है , इसलिए कार्यान्वयन को स्थिर होने के लिए कुछ राउंड की आवश्यकता होती है। –

0

SQL सर्वर से .bak फ़ाइल उस डेटाबेस बोली के लिए विशिष्ट है, और MySQL के साथ संगत नहीं है।

अपने SQL सर्वर डेटाबेस को MySQL में माइग्रेट करने के लिए etlalchemy का उपयोग करने का प्रयास करें। यह एक ओपन-सोर्स टूल है जिसे मैंने विभिन्न आरडीबीएमएस के बीच आसान माइग्रेशन की सुविधा के लिए बनाया है।

त्वरित स्थापना और उदाहरण यहां the github page पर उपलब्ध कराए गए हैं, और परियोजना की उत्पत्ति का एक और विस्तृत स्पष्टीकरण here पाया जा सकता है।

संबंधित मुद्दे