बनाएं मैं वर्तमान में एक सॉफ्टवेयर निर्माण प्रक्रिया को स्वचालित करने में देख रहा हूं जिसमें MySQL वर्कबेंच में परिभाषित डेटाबेस स्कीमा शामिल है।ऑटोमेशन और MySQL वर्कबेंच स्क्रिप्टिंग बनाएं: फॉरवर्ड इंजीनियर एसक्यूएल एससीआरआईपीटी
वर्कबेंच की स्क्रिप्टिंग क्षमताओं का उपयोग करके, मैं वर्कबेंच दस्तावेज़ खोलना चाहता हूं और SQL स्कीम स्क्रिप्ट के रूप में अपनी स्कीमा निर्यात करना चाहता हूं।
मैं क्या जानना चाहता हूं कि एक ऐसा कार्य है जो पूरे स्कीमा को एक चरण में निर्यात करता है जैसे वर्कबेंच की फ़ाइल | निर्यात | फॉरवर्ड इंजीनियर एसक्यूएल स्क्रिप्ट बनाएं, स्वचालित रूप से तालिकाओं के बीच किसी भी निर्भरता को संभालने।
मैं DbMySQL
मॉड्यूल में कुछ उम्मीदवारों कि कर सकता है कि (generateSQL(GrtNamedObject, dict, string)
और makeSQLExportScript(GrtNamedObject, dict, dict, dict)
) मिल गया है, फिर भी मैं मानकों के बारे में उलझन वे उम्मीद – पहले एक स्कीमा वस्तु हो सकता है, लेकिन क्या कर रहे हैं हूँ अन्य तर्क?
क्या कोई मुझे बता सकता है कि मेरी धारणा सही है और/या मुझे उपयोग उदाहरण प्रदान करती है?
अब तक, मैं एक मैनुअल समाधान के साथ आए हैं (नोट करें कि यह वर्तमान में अपने FK संबंधों के अनुसार टेबल सॉर्ट नहीं करता है):
local o = assert(io.open("/tmp/create.sql", "wb"));
foreach_table_all(function (t)
o:write(DbMySQL:makeCreateScriptForObject(t) .. ";\n\n")
end)
o:close()
सवाल How to generate SQL Script from MySQL Workbench using Command Line? से संबंधित है, लेकिन इस सवाल का जवाब पाया कि वास्तव में अमूर्त है और वास्तव में MySQL वर्कबेंच की स्क्रिप्टिंग सुविधाओं का उपयोग करने के बारे में कुछ नहीं बताता है।
निर्यात से कुछ तालिकाओं को छोड़कर उपयोग करने के लिए किस विकल्प का उपयोग करने के लिए कोई संकेत है, क्योंकि यह जीयूआई में संभव है? – sebastian
मेरा प्रश्न देखें। यह 'foreach_table_all()' का उपयोग करता है, और कॉलबैक फ़ंक्शन तालिका की जांच कर सकता है और बस इसे लिखने का निर्णय नहीं ले सकता है। इतना ही आसान। – Archimedix
इस दृष्टिकोण में स्कीमा पहचानकर्ता को छोड़ने का कोई तरीका? – sebastian