SchemaCrawler的使用,提取數據庫結構

jopen 11年前發布 | 28K 次閱讀 JDBC Java開發 SchemaCrawler

看到了一篇關于操作jdbc MetaData的文章,講的是一個開源項目,就是SchemaCrawler,看了一下,覺得作者經驗挺豐富的,估計源碼肯定很不錯.去http://sourceforge.net/projects/schemacrawler/把他下了來.研究一番.

SchemaCrawler-3.7-distrib中有一些例子.這個開源工具功能還是很強大的,先實驗一下簡單的功能吧.呵呵.

1.打開eclipse,新建一個工程schema.

2.在schema的工程上添加外部jar文件,把schemacrawler-3.7.jar添加到里面.

3.添加數據庫jdbc包,我使用mysql,使用mysql的jdbc包.

4.數據庫新建一個數據庫schema.并添加下面的表.

CREATE TABLE customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)

5.建立schema包,并建立Test類.代碼如下.

package schema;

import java.util.Properties;
import javax.sql.DataSource;
import schemacrawler.crawl.SchemaCrawler;
import schemacrawler.crawl.SchemaCrawlerOptions;
import schemacrawler.crawl.SchemaInfoLevel;
import schemacrawler.schema.Column;
import schemacrawler.schema.Schema;
import schemacrawler.schema.Table;
import dbconnector.datasource.PropertiesDataSource;
import dbconnector.datasource.PropertiesDataSourceException;

public class Test {
 /**
  *
  * @param args
  * @throws Exception
  */
 public static void main(String args[]) throws Exception{
     final DataSource dataSource = makeDataSource();
     final Schema schema = SchemaCrawler.getSchema(dataSource,
                                                   SchemaInfoLevel.BASIC,
                                                   new SchemaCrawlerOptions());
     final Table[] tables = schema.getTables();
     for (int i = 0; i < tables.length; i++)
     {
       final Table table = tables[i];
       System.out.println(table);
       final Column[] columns = table.getColumns();
       for (int j = 0; j < columns.length; j++)
       {
         final Column column = columns[j];
         System.out.print("-- " + column);
         System.out.println("  Type:"+columns[j].getType());
       }
     }
 }
 /**
  * 取得DataSource
  * @return
  * @throws PropertiesDataSourceException
  */
 private static DataSource makeDataSource()
   throws PropertiesDataSourceException {
  final String datasourceName = "schemacrawler";

  final Properties connectionProperties = new Properties();
  connectionProperties.setProperty(datasourceName + ".driver",
    "com.mysql.jdbc.Driver");
  connectionProperties.setProperty(datasourceName + ".url",
    "jdbc:mysql://localhost:3306/schema");
  connectionProperties.setProperty(datasourceName + ".user", "root");
  connectionProperties.setProperty(datasourceName + ".password", "root");

  return new PropertiesDataSource(connectionProperties, datasourceName);
 }
}

 

測試運行,如果數據庫運行正確.則可以運行成功!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!