Database 如何逐行读取文件并将其放入oracle数据库
这是我要读取的文件:Database 如何逐行读取文件并将其放入oracle数据库,database,oracle,Database,Oracle,这是我要读取的文件: 20140901|2X-PRG-CZ|PRG|2X|2X-PRG-CZ|||TYPEX||QXTXGXS|QS|QS-PRG-GW|PRG|TYPEB|Y|2|98|0|0 20140901|2X-PRG-CZ|PRG|2X|2X-PRG-CZ|||TYPEX||QXTXGXS|OK|OK-PRG-MQ|PRG|TYPEB|Y|14|672|0|0 20140901|2X-PRG-CZ|PRG|2X|2X-PRG-CZ|||TYPEX||QXTXGXS|EK|EK-PRG-
20140901|2X-PRG-CZ|PRG|2X|2X-PRG-CZ|||TYPEX||QXTXGXS|QS|QS-PRG-GW|PRG|TYPEB|Y|2|98|0|0
20140901|2X-PRG-CZ|PRG|2X|2X-PRG-CZ|||TYPEX||QXTXGXS|OK|OK-PRG-MQ|PRG|TYPEB|Y|14|672|0|0
20140901|2X-PRG-CZ|PRG|2X|2X-PRG-CZ|||TYPEX||QXTXGXS|EK|EK-PRG-KK|PRG|TYPEB|Y|1|48|0|0
20140901|XS-SIN-OL|MAD|3V|3V-MAD-OO|||STXOL||QXTXGXS|7X|7X-BRU-EP|BRU|TYPEB|Y|1|59|0|0
20140901|XS-SIN-OL|MAD|3V|3V-MAD-OO|||STXOL||QXTXGXS|3V|3V-LGG-SP|LGG|TYPEB|Y|1|193|0|0
20140901|XS-SIN-OL|MAD|3V|3V-MAD-OO|||STXOL||QXTXGXS|7X|7X-PAR-EP|PAR|TYPEB|Y|1|59|0|0
20140901|XS-SIN-OL|MAD|3V|3V-MAD-OO|||STXOL||QXTXGXS|YA|YA-MAD-GS|MAD|TYPEB|Y|4|923|0|0
我的独立程序是这样的
package com.dbConn;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class DbConnection {
public static void main(String[] args) {
int updateQuery = 0;
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
System.out.println("Connecting to the database...");
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@124.18.10.22:1521:INT9", "nitin",
"nitin");
String filePath = "D:/ishan1/R3AP201409_GMSTYXCODG_00740_20140902024214.SND";
InputStream inputStream = new FileInputStream(new File(filePath));
System.out.println("inputStream :" + inputStream.toString());
String name = "Hamilton";
String email = "fred@abc.com";
String str = inputStream.toString();
String sql = "INSERT INTO EXT_SITATEXT_ONLINE_ERROR(SERVICE_ID, USAGE_DATA, FILE_NAME_LINE_NUMBER)values (?, ?, ?)";
PreparedStatement statement = connection
.prepareStatement(sql);
try (BufferedReader br = new BufferedReader(
new FileReader(filePath))) {
for (String line; (line = br.readLine()) != null;) {
System.out.println(line);
}
}
statement.setString(1, name);
statement.setString(2, str);
statement.setString(3, email);
statement.executeUpdate();
updateQuery = statement.executeUpdate(sql);
if (updateQuery != 0) {
System.out.println("table is created successfully and "
+ updateQuery + " row is inserted.");
}
int row = statement.executeUpdate(filePath);
if (row > 0) {
System.out.println("A contact was inserted.");
}
statement.close();
connection.close();
} catch (Exception e) {
System.out.println("The exception raised is:" + e);
}
}}
在这段代码中,我想逐行读取驱动器中的文件,并将其插入oracle db。我认为snd是一种二进制格式,如果您打算稍后播放它-您应该将整个snd内容存储在blob/securefile或类似文件中。音频文件是二进制文件。“一行一行地”读是没有意义的。如果确实要将音频文件存储在数据库中,可以将整个文件读入字节数组,并将其作为二进制/BLOB数据存储在数据库中 从字节[]可以轻松创建ByteArrayInputStream,它是InputStream的子类,PreparedStatement.setBinaryStream和PreparedStatement.setBlob所需的参数类型 请参见PreparedStatement.setBinaryStream和PreparedStatement.setBlob:
您正在将音频存储为字符串?为什么您要创建自己的加载程序而不是使用SQL*Loader或外部表?但我不知道如何在代码中实现&我非常困惑,您能告诉我读取文件所需的代码并将其保存为仅在db中的字符串吗。。如果有任何解决方案,请提出建议。