2010-12-03 33 views
2

我有描述一个数据库表数据库模式发生器

的所有表结构我想从这个excel文件生成数据库模式图和数据库模式结构sqlite3的数据库的Excel文件。

任何想法如何做到这一点?

谢谢。

+1

假设表结构/场足够大,以不手工输入它,我d保存excel电子表格选项卡分隔符,然后编写程序将新文件解析为适当的文本SQL调用以创建您的模式。然后,您可以将其作为您选择的SQL DB上的脚本运行。 – slycrel 2010-12-06 03:53:27

+0

这是我寻找但不知道如何编写脚本。 – peterwkc 2010-12-06 05:29:20

回答

2

假设每个选项卡被命名为一个表,并具有细胞作为这样:

Name DataType 
ID integer 
Name varchar(255) 

使用Python或Java来读取使用分别python-excelApache POI for Excel,工作簿。我相信其他语言,特别是.NET也有这样的库。这两种语言也有sqlite3的驱动程序。

遍历每个选项卡 - 使用表格CREATE语句的选项卡名称。迭代选项卡上的每一行并使用该信息来定义表格的列。定义诸如主键/外键和自动递增之类的东西需要一些额外的单元或命名约定+一些聪明的算法。

最有可能每个CREATE语句都需要分别通过数据库连接传递。

0

通常比Excel更好的工具。从你的SQLite3数据库开始,并使用一个模式编辑器如WinSQL的数据库管理器进行分析。

0

假定Excel中包含字段名和类型的列 我会写微小的VB脚本这将转化成对那些成Java SQL字符串,如:

private static final String DATA_CREATE="create table if not exists\n" 
     + "MYTABLE\n" 
     + "DATA_ID integer primary key autoincrement,\n" 
     + "RAW_ID integer not null,\n" 
     + "ORDER_ID integer not null,\n" 
     + "CHUNK blob);"; 

则只需添加这,都串到你的Java源代码。或作为选项,你可以SQL脚本写入文件中的某个地方将它们放置在从SQLite的

0

运行这些资产如果我写这样的程序我会做如下假设:

  • 片将成为表名。
  • 列标题将成为列名称。
  • 列的格式规则将控制数据类型。

考虑到这些限制,您可以创建一个导入和创建工具。

要做到这一点在Java中,我将使用可以读取Excel 文件库,比如Apache的POI: (这是我使用它的行家dependncy)

<dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.6</version> 
    </dependency> 

阅读Excel文件使用POI,分析列并动态创建sqllite数据库中的表。 (如果存在,则删除 表)。然后根据类型生成一个准备好的 声明并基于表单中的每一行插入数据。

这将是基本设置。从那里你必须决定如何在你需要的时候做外键,如此等等。

0

我不认为你要求的是可能的。

用于你的问题的解决方案,将是从Excel发布一个示例表,并请求帮助将其转化为SQL