Trong khi điều này không trả lời trực tiếp câu hỏi, tôi tin rằng nó sẽ cung cấp giải pháp cho mục tiêu gốc: Trích xuất DDL.
Assumption: Sau đây là một kịch bản, vì vậy một môi trường thích hợp (OS X, Linux, Cygwin) là bắt buộc
bước:
- Cài đặt các kịch bản dòng lệnh (follow the instructions here)
Tạo tập lệnh tùy chỉnh sau trong cùng thư mục với google_sql.sh:
GOOGLE_CLOUD_SQL_INSTANCE=test:test
echo "SELECT CONCAT('SELECT CONCAT(\"SHOW CREATE TABLE ',schema_name,'.\",table_name,\";\") \"select \\\\\"use ',schema_name,';\\\\\";\" FROM information_schema.tables WHERE table_schema = \"',schema_name,'\";') 'use information_schema;' FROM SCHEMATA WHERE schema_name NOT IN ('information_schema','mysql','performance_schema');" >> $$.1.get_schema.sql
./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.1.get_schema.sql > $$.2.show_create.sql
./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.2.show_create.sql > $$.3.sql.out
./google_sql.sh $GOOGLE_CLOUD_SQL_INSTANCE information_schema < $$.3.sql.out > $$.4.create.raw
awk -F" " '/Table Create Table/{print "";}
/CREATE/{sub(/^..*CREATE TABLE/,"CREATE TABLE");print $0}
$1 == "" {print $0}
/^\)/{print $0";"}
/^use/{print $0}' $$.4.create.raw > $GOOGLE_CLOUD_SQL_INSTANCE.ddl.sql
rm $$.*
Thay thế "test: test" trong tập lệnh bằng mã định danh Google Cloud của bạn
- Thực thi tập lệnh để tạo tệp có định dạng "test: test" .ddl.sql sẽ có DDL cho tất cả các bảng trong tất cả cơ sở dữ liệu.
Bạn có đang sử dụng Plugin Google dành cho Eclipse không? –
@ Neil H, vâng tôi đang sử dụng Google Plugin –
Tôi khuyên bạn nên đọc lại câu hỏi của mình và cố gắng viết cụm từ theo cách khác nhau để rõ ràng hơn những gì bạn đang yêu cầu, nếu không mọi người sẽ bỏ phiếu để đóng nó không phải là câu hỏi. Bạn chỉ cần thêm một vài câu nữa thay vì cố gắng giải thích mọi thứ trong một câu (câu thứ hai). –