2012-06-21 21 views
25

Tôi đã kết nối với cơ sở dữ liệu Google Cloud SQL từ nhật thực bằng trình khám phá Nguồn dữ liệu. Nhưng khi tôi tạo DDL của cơ sở dữ liệu đó bằng cách sử dụng tùy chọn của nó Generate DDL, tôi không thể nhận được AUTO_INCREMENT trong tập lệnh của mình nhưng nhận khóa chính tương ứng.Tạo báo cáo DDL của cơ sở dữ liệu từ Google Cloud Sql bằng cách sử dụng vấn đề gây ra nhật thực trong tập lệnh?

Làm cách nào để tôi nhận được mã số AUTO_INCREMENT trong tập lệnh của mình?

+0

Bạn có đang sử dụng Plugin Google dành cho Eclipse không? –

+0

@ Neil H, vâng tôi đang sử dụng Google Plugin –

+1

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). –

Trả lời

0

Có lẽ đây sẽ giúp:

Google Cloud SQL Step 3

Một ví dụ khác của việc sử dụng DDL là thế này:

CREATE TABLE tabelle 
(
feld datentyp [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [COMMENT 'string'], 
CONSTRAINT name 
    PRIMARY KEY (feld1, feld2, ...) 
    FOREIGN KEY (feld1, feld2, ...) REFERENCES tabelle (feld1, feld2) 
) 

Nguồn: http://www.tinohempel.de/info/info/datenbank/sql_tabelle.htm
Đó là bằng tiếng Đức nhưng những ví dụ rất tốt!

Hy vọng tôi đã hiểu đúng câu hỏi của bạn và điều này sẽ hữu ích!

1

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:

  1. Cài đặt các kịch bản dòng lệnh (follow the instructions here)
  2. 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 $$.* 
    
  3. Thay thế "test: test" trong tập lệnh bằng mã định danh Google Cloud của bạn

  4. 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.