数据源使用之JAVA获取数据库中表名、字段及数据

最近写了个小案例模仿kettle的access输入做数据处理

在此采用ODBC连接方式,filePath为access文件路径,prop为连接参数
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + filePath;
        Properties prop = new Properties();
        prop.put("user",username);
        prop.put("password",password);
        prop.put("charSet", "UTF-8");
以上边设置的参数加载驱动,mysql驱动自行了解,在此采用access
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(url,prop);
连接成功后获取表名
返回的结果集包括字段有:TABLE_CAT表所在的编目、TABLE_SCHEM表所在的模式、TABLE_NAME表的名称、TABLE_TYPE标的类型、REMARKS一段解释性的备注。
ResultSet tables = conn.getMetaData().getTables(
                    null, null, null,
                    new String[] { "TABLE" 
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,可以使用JDBC和Spring JDBC实现数据同步。 首先在`application.yml`中配置两个数据源的连接信息: ```yaml spring: datasource: oracle: url: jdbc:oracle:thin:@localhost:1521:ORCL username: your_username password: your_password another: url: jdbc:mysql://localhost:3306/another_db username: your_username password: your_password ``` 然后定义一个工具类: ```java @Component public class DataSyncUtil { private NamedParameterJdbcTemplate oracleJdbcTemplate; private NamedParameterJdbcTemplate anotherJdbcTemplate; @Autowired public void setDataSource(@Qualifier("oracleDataSource") DataSource oracleDataSource, @Qualifier("anotherDataSource") DataSource anotherDataSource) { this.oracleJdbcTemplate = new NamedParameterJdbcTemplate(oracleDataSource); this.anotherJdbcTemplate = new NamedParameterJdbcTemplate(anotherDataSource); } public void syncTable(String oracleTableName, String anotherTableName) { // 查询Oracle表中的数据 String oracleSelectSql = "SELECT * FROM " + oracleTableName; List<Map<String, Object>> oracleDataList = oracleJdbcTemplate.queryForList(oracleSelectSql); // 获取Oracle表的字段名列表 Set<String> columnNames = new HashSet<>(); if (!oracleDataList.isEmpty()) { columnNames.addAll(oracleDataList.get(0).keySet()); } // 构造插入数据的SQL语句 StringJoiner columnJoiner = new StringJoiner(","); StringJoiner valueJoiner = new StringJoiner(","); for (String columnName : columnNames) { columnJoiner.add(columnName); valueJoiner.add(":" + columnName); } String insertSql = "INSERT INTO " + anotherTableName + "(" + columnJoiner.toString() + ") VALUES(" + valueJoiner.toString() + ")"; // 批量插入数据到另一个数据库中 if (!oracleDataList.isEmpty()) { MapSqlParameterSource[] batchParams = new MapSqlParameterSource[oracleDataList.size()]; for (int i = 0; i < oracleDataList.size(); i++) { batchParams[i] = new MapSqlParameterSource(); for (String columnName : columnNames) { batchParams[i].addValue(columnName, oracleDataList.get(i).get(columnName)); } } anotherJdbcTemplate.batchUpdate(insertSql, batchParams); } } } ``` 这个工具类使用了两个`NamedParameterJdbcTemplate`对象,分别对应Oracle和另一个数据库。 `syncTable`方法首先从Oracle表中查询数据,然后获取字段名列表。接着构造插入数据的SQL语句,并使用批量插入的方式将数据插入到另一个数据库中。 最后,可以在其他类中使用该工具类进行数据同步: ```java @RestController public class DataSyncController { @Autowired private DataSyncUtil dataSyncUtil; @GetMapping("/sync") public String syncData(@RequestParam("oracleTableName") String oracleTableName, @RequestParam("anotherTableName") String anotherTableName) { dataSyncUtil.syncTable(oracleTableName, anotherTableName); return "同步完成"; } } ``` 在上面的例子中,我们使用`@Autowired`注解将`DataSyncUtil`注入到`DataSyncController`中,并在`syncData`方法中调用`syncTable`方法实现数据同步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值