import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
public class Test {
private static Connection conn=null;
private static Statement sm = null;
private static String schema="FJSTL";//模式名
private static String select="SELECT * FROM";//查询sql
private static String insert="INSERT INTO";//插入sql
private static String values="VALUES";//values关键字
private static String []table={"T_USER"};//table数组
private static List<String> insertList=new ArrayList<String>();//全局存放insertsql文件的数据
private static String filePath="E://insertSQL.txt";//绝对路径 导出数据的文件
/**
* 导出数据库表
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
List<String> listSQL=new ArrayList<String>();
connectSQL("oracle.jdbc.driver.OracleDriver", "xxx.xxx.xxx", "xxx", "xxx");//连接数据库
listSQL=createSQL();//创建查询语句
executeSQL(conn,sm,listSQL);//执行sql并拼装
createFile();//创建文件
}
/**
* 创建insertsql.txt并导出数据
*/
private static void createFile() {
File file=new File(filePath);
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
System.out.println("创建文件名失败!!");
e.printStackTrace();
}
}
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
if(insertList.size()>0){
for(int i=0;i<insertList.size();i++){
bw.append(insertList.get(i));
bw.append("\n");
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 拼装查询语句
* @return 返回select集合
*/
private static List<String> createSQL() {
List<String> listSQL=new ArrayList<String>();
for(int i=0;i<table.length;i++){
StringBuffer sb=new StringBuffer();
sb.append(select).append(" ").append(schema).append(".").append(table[i]);
listSQL.add(sb.toString());
}
return listSQL;
}
/**
* 连接数据库 创建statement对象
* @param driver
* @param url
* @param UserName
* @param Password
*/
public static void connectSQL(String driver,String url,String UserName,String Password){
try{
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, UserName, Password);
sm=conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}
/**
* 执行sql并返回插入sql
* @param conn
* @param sm
* @param listSQL
* @throws SQLException
*/
public static void executeSQL(Connection conn,Statement sm,List listSQL) throws SQLException{
List<String> insertSQL=new ArrayList<String>();
ResultSet rs=null;
try {
rs = getColumnNameAndColumeValue(sm, listSQL, rs);
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs.close();
sm.close();
conn.close();
}
}
/**
* 获取列名和列值
* @param sm
* @param listSQL
* @param rs
* @return
* @throws SQLException
*/
private static ResultSet getColumnNameAndColumeValue(Statement sm,
List listSQL, ResultSet rs) throws SQLException {
if(listSQL.size()>0){
for(int j=0;j<listSQL.size();j++){
String sql=String.valueOf(listSQL.get(j));
rs=sm.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
while(rs.next()){
StringBuffer ColumnName=new StringBuffer();
StringBuffer ColumnValue=new StringBuffer();
for(int i=1;i<=columnCount;i++){
String value=rs.getString(i).trim();
if("".equals(value)){
value=" ";
}
if(i==1||i==columnCount){
ColumnName.append(rsmd.getColumnName(i));
if(Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
|| Types.LONGVARCHAR == rsmd.getColumnType(i)){
ColumnValue.append("'").append(value).append("',");
}else if(Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
|| Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
|| Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
|| Types.DECIMAL == rsmd.getColumnType(i)){
ColumnValue.append(value).append(",");
}else if(Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
|| Types.TIMESTAMP == rsmd.getColumnType(i)){
ColumnValue.append("timestamp'").append(value).append("',");
}else{
ColumnValue.append(value).append(",");
}
}else{
ColumnName.append(","+rsmd.getColumnName(i));
if(Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
|| Types.LONGVARCHAR == rsmd.getColumnType(i)){
ColumnValue.append("'").append(value).append("'").append(",");
}else if(Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
|| Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
|| Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
|| Types.DECIMAL == rsmd.getColumnType(i)){
ColumnValue.append(value).append(",");
}else if(Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
|| Types.TIMESTAMP == rsmd.getColumnType(i)){
ColumnValue.append("timestamp'").append(value).append("',");
}else{
ColumnValue.append(value).append(",");
}
}
}
System.out.println(ColumnName.toString());
System.out.println(ColumnValue.toString());
insertSQL(ColumnName, ColumnValue);
}
}
}
return rs;
}
/**
* 拼装insertsql 放到全局list里面
* @param ColumnName
* @param ColumnValue
*/
private static void insertSQL(StringBuffer ColumnName,
StringBuffer ColumnValue) {
for(int i=0;i<table.length;i++){
StringBuffer insertSQL=new StringBuffer();
insertSQL.append(insert).append(" ").append(schema).append(".")
.append(table[i]).append("(").append(ColumnName.toString())
.append(")").append(values).append("(").append(ColumnValue.toString()).append(");");
insertList.add(insertSQL.toString());
System.out.println(insertSQL.toString());
}
}
}
分享到:
相关推荐
Java 类实现导出各种数据库 insert 语句 本文主要介绍了使用 Java 类实现导出各种数据库 insert 语句的方法。该方法通过连接数据库,执行查询语句,拼装 insert 语句,并将其导出到文件中。 数据库连接 在本文中...
此软件用于把数据库里的数据导出为指定数据库类型的insert语句,用于数据备份或迁移到另一个数据库, 大文本和二进制字段被忽略。 当前支持oracle、sybase、mysql和ms sqlServer数据库。 你可以修改参数文件、增加新...
在日常数据库管理和开发过程中,有时我们需要将Oracle数据库中的数据导出为INSERT语句,以便在其他环境或者备份恢复时使用。"Oracle导出INSERT语句V1.1"是一个专门为此目的设计的实用工具。 这个工具的主要功能是...
- **编程方式**:通过编程语言(如Python, Java)连接数据库,遍历表中所有行,自动生成INSERT语句。 4. **脚本生成过程**: - 首先,连接到数据库并选择要操作的表。 - 然后,获取表的结构信息,包括列名和数据...
本文将详细介绍如何使用Java编程语言来实现Oracle和MS SQL Server数据库的Insert语句脚本导出。 首先,我们需要理解Java GUI(图形用户界面)工具的作用。GUI工具为用户提供友好的交互界面,使得复杂的编程任务变得...
在数据库维护和迁移过程中,有时我们需要将Oracle数据库中的数据转换为SQL INSERT语句,以便在其他环境中重新插入这些数据。"Oracle导出INSERT语句V1.1.1"就是这样一个实用工具,它能帮助我们自动化这个过程。 该...
本文将详述如何使用Java实现TXT文件与数据库之间的数据导入和导出。 首先,我们来了解一下基础概念。TXT文件是一种常见的文本文件格式,通常用于存储纯文本数据,如表格、日志或简单的数据记录。数据库,如MySQL、...
当涉及到不同数据库系统间的数据交互,如从SQL Server到MySQL,JAVA作为一种强大的后端编程语言,提供了丰富的库和工具来实现跨数据库服务器的数据导出和导入功能。本文将深入探讨如何使用JAVA来实现这一目标。 ...
1. 插入数据:使用INSERT语句向表中插入数据,如`INSERT INTO users (id, name) VALUES (1, 'John');`。 2. 批量插入:H2支持批处理,可以一次性插入多条记录,例如: ``` VALUES (1, 'John'), (2, 'Jane'), (3, '...
Java通过Java Database Connectivity (JDBC) API与各种数据库进行交互。使用`DriverManager.getConnection()`方法,我们可以根据配置文件提供的参数建立与数据库的连接。确保已添加对应数据库驱动的JAR包到项目的类...
- **JDBC(Java Database Connectivity)**:Java标准API,用于与各种类型的数据库建立连接,执行SQL语句并获取结果。 - **数据库驱动**:针对SQL Server和MySQL,需要对应的JDBC驱动,如mssql-jdbc和mysql-...
通过存储过程将表数据生产对应的Insert语句
在这个场景中,我们探讨的是如何使用Java来实现在XML与不同类型的数据库之间的数据导入和导出,并结合了前台的Ajax技术以实现更流畅的用户体验。 首先,XML(eXtensible Markup Language)是一种用于存储和传输结构...
本主题聚焦于从Sybase数据库中导出全部表的建表语句,并转换为Oracle、MySQL和Sybase自身的格式。这样的操作对于跨平台的数据迁移、数据库结构比对以及系统兼容性测试具有很高的实用价值。 首先,让我们深入了解`...
本项目"java实现Excel数据导入到mysql数据库"旨在利用Java技术将Excel表格中的数据高效地导入到MySQL数据库,并且在数据库中存在相同数据时进行更新,同时也支持将数据库中的数据导出到Excel表中。这个过程涉及到多...
这个"asp将EXCEL导入导出数据库原程序"提供了一个解决方案,能够方便地将Excel中的数据存入MSSQL数据库,同时也能将数据库中的数据导出到Excel文件。 首先,我们需要了解如何使用ASP连接MSSQL数据库。通常,这涉及...
可以快速将SQL2000数据库里的所有数据导出为INSERT的SQL语句。由于Oracle有这个功能所以为添加。附全部程序源码,MYECLIPSE5.5版本运行cn.sist.database.swing.MainView
4. **批量插入**:为了提高效率,工具可能会支持生成批量INSERT语句,一次插入多行数据,而非每行一条语句。 5. **导出选项**:可能提供不同的导出格式,如纯文本文件、XML、CSV等,以满足不同需求。 6. **兼容性*...