上周为应对去外地投标演示网站demo时可能没网的问题,经理让我把远程服务器的postgresql数据库上的数据导出至access或sqlite数据库中,几经波折,终于完成,现将过程记录如下。
demo所用S2SH框架,经查询了解hibernate支持access和sqlite后,由于以前用过一点access,我选择了将数据导出至access。
可参考此博客的前五条,建立postgresql的odbc数据源,然后打开一个新建的access数据库,依次点击“外部数据”--->"新数据源"--->"其他源"--->"ODBC数据库"--->"将源数据导入当前数据库的新表中,确定"--->"机器数据源",然后可以选择之前建好的数据源postgresql,确定之后,选择想要导入的表导入即可。现在,postgresql里的数据表及数据都导入到新的access数据库里了。
接下来hibernate连接access数据库,在建立数据库连接时发生如下图错误,几试未果,故弃之,改用sqlite。
接下来进入正题,导入至sqlite数据库。
1.参考此博客将postgresql数据库中的数据表结构及数据分别导出,其导出是将数据库中所有表的数据都导出的,如果想一个表一个表导出,可以用如下命令,pg_dump -h 你的数据库服务器的ip -U 数据库的用户名 --inserts -t 要导出的表名 要导出的数据库的名字 > E:/table.sql 这样可以将数据库里的某个表单独导出,记得参考上述所参考博文,删掉不必要的语句。
2.安装sqlite数据库及其可视化的工具软件SQLite Expert,新建一数据库,然后在下图中的最右一项SQL项下的空白处右键,选择open sql script选项,将之前导出的sql选中,打开,然后Execute SQL即可
这样,依次将生成的sql文件导入执行完毕后,数据库就算导入成功了。
3.hibernate建立连接,如下:
方言配置:
<property name="dialect">com.ren.utils.SQLiteDialect</property>
连接池配置:
<!-- 配置连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="org.sqlite.JDBC"/>
<property name="jdbcUrl" value="jdbc:sqlite:E:/db/sqllite/database/db_automonitor.db"/>
<property name="user" value=""/>
<property name="password" value=""/>
</bean>
以上便完成了将postgresql数据库导入至sqlite数据库,并配置hibernate。