admin管理员组

文章数量:1572435

  • 控制文件test.ctl
LOAD DATA
INFILE 'C:\case.csv'
APPEND
INTO TABLE T
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
(
A CHAR,
B CHAR
)
  • 数据文件case.csv
1,2
a,b
b,c
c,d
  • 完整例子
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class JavaSqlldr {

    public static final String ctlFileDir = "C:\\";
    public static final String logFileDir = "C:\\";

    public static void main(String[] args) {

        String username = "SYS";
        String password = "123";
        String Database = "@ORCL";
        String ctlFileName = "test.ctl";
        String logFileName = "test_table.log";
        boolean isDBA = true;

        String command = buildCommand(
                            username, 
                            password, 
                            Database, 
                            isDBA,
                            JavaSqlldr.ctlFileDir, 
                            ctlFileName, 
                            JavaSqlldr.logFileDir, 
                            logFileName
                            );

        Executive(command);
    }

    /**
     * @param username
     * @param password
     * @param Database
     * @param isDBA
     * @param ctlFileDir
     * @param ctlFileName
     * @param logFileDir
     * @param logFileName
     * @return 
     *      the sql loader command
     */
    public static String buildCommand(
            String username, 
            String password, 
            String Database,
            boolean isDBA,
            String ctlFileDir, 
            String ctlFileName,
            String logFileDir, 
            String logFileName) {

        StringBuffer command = new StringBuffer();
        command.append("sqlldr ");
        command.append(isDBA ? "'" : "");
        command.append(username);
        command.append("/");
        command.append(password);
        command.append(Database);
        command.append(isDBA ? " as sysdba'" : "");
        command.append(" control=" + ctlFileDir + ctlFileName);
        command.append(" log=" + logFileDir + logFileName);

        System.out.println("Command : " + command.toString());
        //command : sqlldr 'SYS/123@ORCL as sysdba' control=C:\test.ctl log=C:\test_table.log
        return command.toString();

    }


    /**
     * To call DOS command
     */
    public static void Executive(String command) {

        InputStream ins = null;

        String[] cmd = new String[] { "cmd.exe", "/C", command }; // 命令
        try {
            Process process = Runtime.getRuntime().exec(cmd);
            ins = process.getInputStream(); // 获取执行cmd命令后的信息

            BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
            String line = null;
            while ((line = reader.readLine()) != null) {
                String msg = new String(line.getBytes("ISO-8859-1"), "UTF-8");
                System.out.println(msg); // 输出
            }
            int exitValue = process.waitFor();

            System.out.println("Returned value was:" + exitValue);

            if(exitValue == 0) {
                System.out.println("The records were loaded successfully");
            }else {
                System.out.println("The records were not loaded successfully");
            }

            process.getOutputStream().close(); // 关闭
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

本文标签: 例子命令代码JavaSqlldr