6

Tôi cần có thể để thực hiện kỹ thuật chuyển tiếp từ mô hình nằm trong tệp .mwb. Tất cả điều này từ dòng lệnh như tôi muốn tự động hóa quá trình.Kỹ thuật dòng lệnh foward bằng tệp .mwb?

Bất cứ ai có thể vui lòng cho tôi biết nếu điều này có thể và nếu có thì làm cách nào?

+0

xem xét chỉnh sửa bài viết của bạn để bao gồm đầu vào mẫu, sản lượng mẫu dự kiến, mã hiện tại, sản lượng hiện tại. Chúc may mắn. – shellter

+0

Xin chào Shellter. Đầu vào là tệp '.mwb'; đầu ra là một tập tin DDL '.sql'. Mã hiện tại: không có gì khi tôi đang tìm chỉ đường. – balteo

+0

Hi @balteo, bạn có bao giờ có thể làm việc này không? Tôi hiện đang đối mặt với cùng một vấn đề. – Aistina

Trả lời

5

Đây là sản phẩm trong dòng lệnh khi bạn gọi WB với --help:

mysql-workbench [<options>] [<model file>] 
Options: 
    --force-sw-render  Force Xlib rendering 
    --force-opengl-render Force OpenGL rendering 
    --query <connection> Open a query tab to the named connection 
    --admin <instance>  Open a administration tab to the named instance 
    --model <model file> Open the given EER model file 
    --script <script file> Execute the given Python or Lua script file 
    --run <script>   Execute the given code in default language for GRT shell 
    --run-python <script> Execute the given code in Python 
    --run-lua <script>  Execute the given code in Lua 
    --quit-when-done  Quit Workbench when the script is done 
    --help, -h    Show command line options and exit 
    --log-level=<level> Valid levels are: error, warning, info, debug1, debug2, debug3 
    --verbose    Enable diagnostics output 
    --version    Show Workbench version number and exit 

Tôi đoán bạn có thể tải mô hình của bạn bằng cách sử dụng tùy chọn --model và sau đó tạo ra một kịch bản mà sẽ thực hiện các kỹ thuật về phía trước và chạy nó sử dụng tùy chọn --run và sau đó hướng dẫn WB thoát khi nó kết thúc bằng tùy chọn --quit-when-done.

Bạn có thể tham khảo trợ giúp WB để tìm hiểu thêm về cách tạo tập lệnh cũng như this guide.

+0

Cảm ơn Sergio rất nhiều. Tôi sẽ xem xét các mẫu được cung cấp và bắt đầu viết kịch bản của tôi. – balteo

3

Bạn thực sự có thể tự động hóa tác vụ này bằng tập lệnh Python (hoặc Lua) - MySQL Workbench đã có trình thông dịch theo menu Scripting. Tạo một kịch bản mới và sử dụng stub:

# -*- coding: utf-8 -*- 

import os 
import grt 
from grt.modules import DbMySQLFE 

c = grt.root.wb.doc.physicalModels[0].catalog 
DbMySQLFE.generateSQLCreateStatements(c, c.version, { 
    'GenerateDrops' : 1, 
    'GenerateSchemaDrops' : 1, 
    'OmitSchemata' : 1, 
    'GenerateUse' : 1 
}) 
DbMySQLFE.generateSQLCreateStatements(c, c.version, { 
DbMySQLFE.createScriptForCatalogObjects(os.path.dirname(grt.root.wb.docPath) + 'ddl.sql', c, {}) 

Nó không actully chạy từ dòng lệnh, nhưng tôi tin rằng bạn có thể chạy nó với --run-script tùy chọn.

+0

Nó hoạt động tốt từ dòng lệnh (Tôi chỉ cần một giả X-server để chạy WB) ... * nhưng * Tôi đã có một vấn đề với quan điểm của tôi. Một số chế độ xem của tôi sử dụng các chế độ xem khác và thứ tự tạo tác phẩm theo kịch bản không ghi chú phụ thuộc vào tài khoản. Nói cách khác, nếu tôi nhận được hai lượt xem vA và vB, và vB được định nghĩa với một cái gì đó như 'chọn somefield FROM vA', tôi có thể kết thúc bằng một tập lệnh sql cố gắng tạo ra khung nhìn B trước khi xem A ... tất nhiên, dẫn đến một lỗi: 'Bảng 'vA' không tồn tại ' Bất kỳ ý tưởng nào để sửa lỗi này? – Balmipour

+0

@Balmipour, xin lỗi tôi đã không tham gia vào câu hỏi này ngay bây giờ, không thể nhớ lại chi tiết. Nói chung, nếu bạn có một câu hỏi mới thì tốt hơn nên hỏi riêng nó. Gắn thẻ thích hợp có thể giúp người khác chú ý và giải quyết nó. – madhead

2

Câu hỏi này quá cũ, nhưng tôi đã tìm thấy dự án trên github thực hiện việc này, bên dưới lệnh trong cửa sổ cmd và here kho lưu trữ github và phiên bản tệp sh linux khác.

của Windows

@echo off 
REM generate sql from mwb 
REM usage: mwb2sql.bat {.mwb file} {output file} 

SET WORKBENCH="C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE\MySQLWorkbench.exe" 
SET OUTPUT=%~f2 
%WORKBENCH%^
    -open %~f1^
    -run-python "import os;import grt;from grt.modules import DbMySQLFE as fe;c = grt.root.wb.doc.physicalModels[0].catalog;fe.generateSQLCreateStatements(c, c.version, {});fe.createScriptForCatalogObjects(os.getenv('OUTPUT'), c, {})"^
    -quit-when-done 
Các vấn đề liên quan