求救!关于TXT文件导入PLSQL数据库还有数据分割的问题

alix_12 2011-12-14 05:45:53
一、要导入的txt文件格式:
1.您的年龄:
A、25岁 B、26-40岁 C、41-55岁 D、56及以上
2.您的职业:
A、专业技术人员 B、服务业人员 C、军人 D、企业工薪

二、表名table的表结构ID,ANSWER,CODE
三、插入数据库要实现的效果是

问题是:
1.如何实现txt文件导入,java代码怎么实现?
2.如何一行行的读取,用split( " ")或者split( ". ")怎么方便些?
尽量说详细些,最好有类似的代码。
...全文
1155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
alix_12 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 alix_12 的回复:]
public class FinancRiskQuesAction extends LianaAction{

//public static final String filepath = "E:/temp";

private String ID = "";
private String QUES = "";
private String CODE = "";
privat……
[/Quote]
哪位大神能够帮我整理下思路,指出错误的地方?
alix_12 2011-12-15
  • 打赏
  • 举报
回复
public class FinancRiskQuesAction extends LianaAction{

//public static final String filepath = "E:/temp";

private String ID = "";
private String QUES = "";
private String CODE = "";
private String receiverList = "";

public String execute(Context context) throws TranFailException {
Connection connection = null;
try {
connection = LianaDBAccess.getConnection();
connection.setAutoCommit(false);

sendMessage(connection, context, ID, QUES, CODE,receiverList);

connection.commit();
} catch (SQLException ex) {
Trace.logError(Trace.COMPONENT_JDBC, "JDBC异常", ex);
} catch (Exception ex) {
try {
if (connection != null)
connection.rollback();
} catch (SQLException e) {
Trace.logError(Trace.COMPONENT_JDBC, "JDBC异常", e);
}
throw new TranFailException(ex);
} finally {
LianaDBAccess.releaseConnection(connection);
}
return DEFAULT_RETURN_VALUE;
}


private void sendMessage(Connection connection, Context context, String ID, String QUES, String CODE, String receiverList)
throws Exception {
String sql = "INSERT INTO PB_RISK_QUEANS (PSQ_ID, PSQ_QUES, PSQ_CODE) "
+ "VALUES (?, ?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
for (int i = 0;i < receiverList.size();i ++) {
statement.setString(1, ID);
statement.setString(2, QUES);
statement.setString(3, CODE);
statement.executeUpdate();
statement.clearParameters();
}
statement.close();
}

public static void main(String[] args) throws Exception {
try {
java.sql.PreparedStatement pstmt = conn.prepareStatement (sql);

java.io.BufferedReader reader = null;
try {
String financId = (String)context.getDataValue("financId");
String actionFlag = (String)context.getDataValue("actionFlag");
String financId1= financId+ actionFlag;
String fileName = financId1+".txt";
String name =URLEncoder.encode(fileName,"UTF-8");
String filepath = LianaStandard.getSelfDefineSettingsValue("perbankFilePath");

FileInputStream fis = new FileInputStream(filepath + File.separator + "fileName");
BufferedReader reader1 = new BufferedReader(new InputStreamReader(fis, "GBK"));
String buf = null;
int i = 1;
while ((buf = reader1.readLine()) != null) {
if (i % 2 == 0) {
StringTokenizer tokenizer = new StringTokenizer(buf, " ");
while (tokenizer.hasMoreElements()) {
pstmt.setObject (i ++, tokenizer.nextToken());
}
pstmt.executeUpdate (); // 插入一行
buf = reader1.readLine (); // 读入下一入
}
}
}catch (java.io.IOException ioe) {
} finally { // 关闭文件
try{
reader.close();
}
catch (java.io.IOException ignore) {
}
}
conn.commit (); // 提交事务
} catch (java.sql.SQLException e){ // 出错处理
try{conn.rollback ();} catch (java.sql.SQLException ignore){}
} finally {
if (conn != null) {
try { conn.close(); } catch (java.sql.SQLException ignore) {}
}
}
}
}
alix_12 2011-12-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 viszl 的回复:]
oracle的话直接吃用sqlldr从文本文件导入数据

写好控制文件,然后
sqlldr userid=/ control = ttt.ctl
[/Quote]


首先谢谢你的了,可是这种方式对于我好像不太行。
我是想先导入数据库之后,然后从JSP里面取出来,然后问题和答案动态显示,方便以后维护用,直接更新TXT文件,不用更改JSP页面。
我是想写一个JAVA类,然后插入。
这个TXT解析不太好搞,读取第一行的题号存到ID里面,然后第一行的问题要存入ANSWER里面,接着读取第二行,这样的话必须要分割,如果用空格分割的话不知道怎么写。
loveofmylife 2011-12-14
  • 打赏
  • 举报
回复
oracle的话直接吃用sqlldr从文本文件导入数据

写好控制文件,然后
sqlldr userid=/ control = ttt.ctl
alix_12 2011-12-14
  • 打赏
  • 举报
回复
貌似没有人来。。。难道非要在技术区发帖才行,可是要积分大于20啊。。。救命啊!!!
alix_12 2011-12-14
  • 打赏
  • 举报
回复
我晕,格式又乱了,结果不是这样的啊。
我刚刚在百度知道提问了,类似那种的。
链接是http://zhidao.baidu.com/question/354580536.html?oldq=1
alix_12 2011-12-14
  • 打赏
  • 举报
回复
刚才图片的链接贴不上,结果类似这样的,多谢了啊:
id answer code
1. 您的年龄:
A、25岁 1
B、26-40岁 1
C、41-55岁 1
D、56及以上 1
2. 您的职业:
A、专业技术人员 2
B、服务业人员 2
C、军人 2
D、企业工薪 2

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧