2010-07-13 61 views
5

Tôi hiện đang sử dụng FinalBuilder để tạo một bản xây dựng chỉ với một cú nhấp chuột, nhưng tôi phải đối mặt với MySQL Workbench thiếu khả năng tạo tập lệnh SQL từ một dòng lệnh.Cách tạo SQL Script từ MySQL Workbench bằng Command Line?

+0

Bạn có thể làm rõ tại sao đó là vấn đề và những gì bạn đang cố gắng làm? – Cez

+0

Nếu không có dòng lệnh của Workbench, làm thế nào tôi có thể tự động hóa hoạt động xây dựng? –

+0

Bạn đang sử dụng Workbench cho mục đích gì? Nó không có giao diện dòng lệnh theo như tôi biết. – Cez

Trả lời

0

MySQL Workbench có một API Script Script đầy đủ.

Nếu bạn cần các tính năng bổ sung, xin vui lòng cho chúng tôi biết: http://forums.mysql.com/index.php?151

  • MySQL Workbench
+1

Tnx cho liên kết. Tôi chắc chắn sẽ kiểm tra API này. Nó chắc chắn là một tính năng tuyệt vời để có một ứng dụng CLI cũng có thể tạo ra SQL từ các tệp mwb. Vì vậy, các lược đồ DB có thể được thiết kế bằng cách sử dụng giao diện MySQL Workbench, và sau đó một thủ tục triển khai tự động nhấp chuột duy nhất (trong quá trình phát triển, ý tôi là) có thể làm mọi thứ trên lược đồ db. Giữ mọi thứ tuân thủ DRY. Nhưng tôi tự tin rằng tất cả điều này có thể được thực hiện thông qua API Python đã đề cập ở trên. – maraspin

+0

Liên kết không dẫn đến API ... –

4

Bạn thực sự có thể tự động hoá công việc này với Python (hoặc Lua) kịch bản - MySQL Workbench đã có một thông dịch viên dưới 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.

+2

Cảm ơn! Điều này về cơ bản hoạt động (và tôi đã kết hợp câu trả lời của bạn vào [câu trả lời của câu hỏi của tôi] (http://stackoverflow.com/a/26914679/419404)), mặc dù có một số lỗi nhỏ trong kịch bản của bạn: Nó nên đọc 'DbMySQLFE .generateSQLCreateStatements (c, c.version, {}) 'và' + '/ ddl.sql''. – Archimedix

Các vấn đề liên quan