我想从teradata数据库中选择所有值并将其插入到mysql数据库中。我正在考虑将此作为一个java脚本,因为这是我最熟悉的。
我能够得到如下数据:
// connect to the teradata table and get all the data
Class.forName("com.teradata.jdbc.TeraDriver");
Connection teraConnect = DriverManager.getConnection(url,username, password);
Statement teraStatement= teraConnect.createStatement();
String query = "select * from mytable";
ResultSet teraResult = teraStatement.executeQuery(query);
现在我想把所有内容都放到我的mysql数据库中。该表已存在且具有相同的模式(相同的列名和类型)。
我如何插入mysql数据库。这就是我所拥有的:
// connect to the mysqltable
Class.forName("com.mysql.jdbc.Driver");
Connection sqlConnect = DriverManager.getConnection(mysqlUrl,username, password);
Statement mysqlStatement= sqlConnect.createStatement();
//??? now what? how to convert a resultset to a query that i can execute
我计划通过一夜之间的工作来做到这一点。
注意:我无法控制teradata数据库服务器,因为IT人员控制它。
注意:这两个数据库不在同一台机器上(如果这样做了差异)。
答案 0 :(得分:1)
您需要通过结果集进行迭代,将每行的每个数据放入数组中,然后通过数组迭代以发送插入请求。
示例:
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE);
ResultSet res= st.executeQuery(sqlQuery);
res.next();
while (!res.isAfterLast()) {
data1[i] = res.getInt(1);
data2[i] = res.getString(2);
res.next();
i++;
}
//Insert into DB
Connection sqlCon = DriverManager.getConnection(url, usr, pwd)
stSql = connection.createStatement();
for (i=0; i<size; i++){
sqlQuery = "INSERT INTO table (col1, col2) VALUES ("+Data1[i]+", "+Data2[i]+")";
st.executeQuery(sql);
}