(300分)在ORACLE服务器端,定期把一文件夹下的不同文本文件(格式相同)导入表内,该如何做??? 可以通过操作系统定时调用sqlload存入表内,也可以通过应用程序如java程序将其定期导入表内。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议用utl_file+job也可以考虑用proc来实现sqlload不好,不普遍 SQLLOADER来做可以,些个CMD 定时任务来执行就可以了。好像DTS也可以定义为任务来执行 unix下用crontab + sqlload 给个简单的例子吧!WIN2000+ORACLE8I 给个简单的例子吧!WIN2000+ORACLE8I 通过任务管理器让它定时通过运行sqlldr来导入这些文本文件!! 变换一下思路:让CMD定期调用哦 谢谢各位的鼓励。通过几天的努力,已基本完成。下面是我分开写的类。各位可自己整合(JAVA新手)基本思路是:1 写一个JAVA类对文件夹处理。得到需要的TXT文件。import java.sql.*;import java.net.URI;import java.io.*;import java.lang.String;import java.util.*;import java.util.regex.*; class listfile{ public static void main (String []args) throws IOException { filestrview(); } public void filestrview() { try { //创建文件对象 File dir = new File("D:/temp"); //创建 文件过滤 Filter filter = new Filter("txt"); String filelist[] = dir.list(filter); for (int i = 0;i <filelist.length;i++) { File temfile = new File(filelist[i]); System.out.println("文件: "+ temfile); } } catch (Exception e) { System.out.println(e.toString()); } } }class Filter implements FilenameFilter{ String extension; Filter (String extension) { this.extension=extension; } public boolean accept(File directory,String filename) { return filename.endsWith("."+extension); }} 2 读取一个TXT文件。class openfile{ private static String REGEX = ":"; public static void main (String []args) throws Exception { String []filetxt; String strtxt=null; try { File dir = new File("D:/temp/open.txt") ; RandomAccessFile rFile = new RandomAccessFile(dir,"r"); while (rFile.getFilePointer() < rFile.length()) { //字符串的拆分 strtxt = rFile.readLine(); Pattern p = Pattern.compile(" "); filetxt = p.split(strtxt); for(int i=0;i<filetxt.length;i++) { System.out.println(filetxt[i]); } } rFile.close() ; } catch (Exception e) { System.out.println(e.toString()); } }}3 导入数据库 为了测试方面 表只有两个字段:NAME,SID (VARCHAR2)public class mytest { public static void main(String []args ) throws Exception { try { main_insert("jackjia","19761121"); } catch (Exception e) { System.out.println(e.toString()); } } public static void main_insert(String name,String sid) throws SQLException,ClassNotFoundException { /* 建立到数据库的缺省连接 */ String url="jdbc:oracle:thin:@sbjsd-jiadz:1521:topdb"; //Connection conn = new OracleDriver().defaultConnection(); /* 构造动态SQL语句 */ String sql = "INSERT INTO mytest(name,sid) " + "VALUES(?,?)"; try { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection( url,"topunion", "topunion"); /* 准备动态SQL语句 */ PreparedStatement pstmt = conn.prepareStatement(sql); /* 设置动态SQL参数值 */ pstmt.setString(1, name); pstmt.setString(2, sid); /* 执行动态SQL语句 */ pstmt.executeUpdate(); /* 关闭动态SQL语句 */ pstmt.close(); } catch (SQLException e) { } }}4 LODAJAVA 或者界面导入 数据库5 写一个过程CREATE OR REPLACE PROCEDURE "TOPUNION"."MYINSERT" (s varchar2 , ss varchar2)as LANGUAGE JAVA NAME 'mytest.insert(java.lang.String,java.lang.String)';6 .创建一个 JOB 。运行 ,OK我新手,兄弟们可自己优划整合。写一个通用类。可解帖了 我很想知道 UTL_FILE包+ JOB包。的解决方法(WINDOWS) 我感觉楼主用JAVA程序写的太麻烦了,应该有简捷的办法的。我很想知道 UTL_FILE包+ JOB包。的解决方法(WINDOWS)替你UP 高分求救,ORACLE 模糊查询的问题. 郁闷的问题: 连接 Oracle9i 错误: The Network Adapter could not establish the connection 我要个补丁:p3095277_9204_linux.zip C:\>svrmgrl命令怎么不好使呀?请高手解答。 请教rman直接备份到磁带问题! [求助]我导数据库的表结构时,提示imp-00041的错误,怎么解决?谢谢! 新手求助~~游标控制循环问题~ sflight(飞)请进来接分 紧急求助!!! 监听器出了问题!急救! 超难问题,分不够再加 再求SQL语句(2003/07/25) ,很急。
也可以考虑用proc来实现
sqlload不好,不普遍
好像DTS也可以定义为任务来执行
让CMD定期调用哦
基本思路是:
1 写一个JAVA类对文件夹处理。得到需要的TXT文件。
import java.sql.*;
import java.net.URI;
import java.io.*;
import java.lang.String;
import java.util.*;
import java.util.regex.*; class listfile
{
public static void main (String []args) throws IOException
{
filestrview();
}
public void filestrview()
{
try {
//创建文件对象
File dir = new File("D:/temp");
//创建 文件过滤
Filter filter = new Filter("txt");
String filelist[] = dir.list(filter);
for (int i = 0;i <filelist.length;i++)
{
File temfile = new File(filelist[i]);
System.out.println("文件: "+ temfile);
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
}
class Filter implements FilenameFilter
{
String extension;
Filter (String extension)
{
this.extension=extension;
}
public boolean accept(File directory,String filename)
{
return filename.endsWith("."+extension);
}
}
2 读取一个TXT文件。
class openfile{ private static String REGEX = ":"; public static void main (String []args) throws Exception
{
String []filetxt;
String strtxt=null;
try {
File dir = new File("D:/temp/open.txt") ;
RandomAccessFile rFile =
new RandomAccessFile(dir,"r");
while (rFile.getFilePointer() < rFile.length())
{ //字符串的拆分
strtxt = rFile.readLine();
Pattern p = Pattern.compile(" ");
filetxt = p.split(strtxt);
for(int i=0;i<filetxt.length;i++)
{
System.out.println(filetxt[i]);
}
}
rFile.close() ;
}
catch (Exception e)
{
System.out.println(e.toString());
} }
}
3 导入数据库 为了测试方面 表只有两个字段:NAME,SID (VARCHAR2)public class mytest
{
public static void main(String []args ) throws Exception
{
try
{
main_insert("jackjia","19761121");
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
public static void main_insert(String name,String sid) throws SQLException,ClassNotFoundException
{
/* 建立到数据库的缺省连接 */
String url="jdbc:oracle:thin:@sbjsd-jiadz:1521:topdb";
//Connection conn = new OracleDriver().defaultConnection();
/* 构造动态SQL语句 */ String sql = "INSERT INTO mytest(name,sid) " +
"VALUES(?,?)";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(
url,"topunion", "topunion");
/* 准备动态SQL语句 */
PreparedStatement pstmt = conn.prepareStatement(sql); /* 设置动态SQL参数值 */ pstmt.setString(1, name); pstmt.setString(2, sid); /* 执行动态SQL语句 */ pstmt.executeUpdate(); /* 关闭动态SQL语句 */ pstmt.close(); }
catch (SQLException e) { } }
}4 LODAJAVA 或者界面导入 数据库5 写一个过程CREATE OR REPLACE PROCEDURE "TOPUNION"."MYINSERT" (s varchar2 ,
ss varchar2)
as LANGUAGE JAVA NAME
'mytest.insert(java.lang.String,java.lang.String)';
6 .创建一个 JOB 。运行 ,OK我新手,兄弟们可自己优划整合。写一个通用类。可解帖了
我很想知道 UTL_FILE包+ JOB包。的解决方法(WINDOWS)
替你UP