
Go लाइब्रेरी और CLI जो PostgreSQL, MySQL, SQLite, और Cassandra के लिए समर्थन के साथ डेटाबेस स्कीमा माइग्रेशन प्रबंधित करने हेतु है, जिसमें अप/डाउन माइग्रेशन वर्कफ़्लो शामिल हैं।
Go में लिखा गया एक माइग्रेशन सहायक टूल। इसे अपने मौजूदा Golang कोड में उपयोग करें या CLI के माध्यम से कमांड चलाएँ।
GoCode import github.com/mattes/migrate/migrate
CLI go get -u github.com/mattes/migrate
विशेषताएँ
^C पर चल रहे माइग्रेशन को सुचारू रूप से बंद करता है।migrate package के ऊपर बनाया गया है।कोई और driver चाहिए? बस Driver interface लागू करें और एक PR खोलें।
# इंस्टॉल करें
go get github.com/mattes/migrate
# पथ में नई माइग्रेशन फ़ाइल बनाएँ
migrate -url driver://url -path ./migrations create migration_file_xyz
# सभी उपलब्ध माइग्रेशन लागू करें
migrate -url driver://url -path ./migrations up
# सभी माइग्रेशन वापस रोल करें
migrate -url driver://url -path ./migrations down
# सबसे हाल ही में लागू किए गए माइग्रेशन को रोल बैक करें, फिर उसे दोबारा चलाएँ।
migrate -url driver://url -path ./migrations redo
# down और फिर up कमांड चलाएँ
migrate -url driver://url -path ./migrations reset
# वर्तमान माइग्रेशन संस्करण दिखाएँ
migrate -url driver://url -path ./migrations version
# अगले n माइग्रेशन लागू करें
migrate -url driver://url -path ./migrations migrate +1
migrate -url driver://url -path ./migrations migrate +2
migrate -url driver://url -path ./migrations migrate +n
# पिछले n माइग्रेशन रोल बैक करें
migrate -url driver://url -path ./migrations migrate -1
migrate -url driver://url -path ./migrations migrate -2
migrate -url driver://url -path ./migrations migrate -n
# विशिष्ट माइग्रेशन पर जाएँ
migrate -url driver://url -path ./migrations goto 1
migrate -url driver://url -path ./migrations goto 10
migrate -url driver://url -path ./migrations goto v
GoDoc यहाँ देखें: http://godoc.org/github.com/mattes/migrate/migrate
import "github.com/mattes/migrate/migrate"
// किसी भी आवश्यक driver को इम्पोर्ट करें ताकि वे पंजीकृत और उपलब्ध हों
import _ "github.com/mattes/migrate/driver/mysql"
// माइग्रेशन फ़ंक्शनों के सिंक्रोनस संस्करणों का उपयोग करें ...
allErrors, ok := migrate.UpSync("driver://url", "./path")
if !ok {
fmt.Println("ओह नहीं ...")
// allErrors स्लाइस के साथ कुछ करें
}
// माइग्रेशन फ़ंक्शनों के एसिंक्रोनस संस्करण का उपयोग करें ...
pipe := migrate.NewPipe()
go migrate.Up(pipe, "driver://url", "./path")
// pipe मूल रूप से सिर्फ एक चैनल है
// अपना खुद का चैनल लिसनर लिखें। उदाहरण के लिए main.go में writePipe() देखें।
माइग्रेशन फ़ाइलों का प्रारूप इस प्रकार दिखता है:
001_initial_plan_to_do_sth.up.sql # up माइग्रेशन निर्देश
001_initial_plan_to_do_sth.down.sql # down माइग्रेशन निर्देश
002_xxx.up.sql
002_xxx.down.sql
...
दो फ़ाइलें क्यों? इस तरह आप अभी भी कुछ ऐसा कर सकते हैं जैसे
psql -f ./db/migrations/001_initial_plan_to_do_sth.up.sql और up और down माइग्रेशन
को विभाजित करने के लिए किसी कस्टम मार्कअप भाषा की आवश्यकता नहीं है। कृपया ध्यान दें
कि फ़ाइल एक्सटेंशन driver पर निर्भर करता है।