现在的情况是每个月要把300多M的txt数据导入到oracle中
现在用sql loader导入时提示
SQL*Loader-510: Physical record in data file (if03.txt) is longer than the maximum(1048576)
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
可能是数据量太大么?
现在从客户的角度出发,就算能导入操作起来也不方便,请各位大侠能提供点代码,从程序中读入数据 并导入到相应的表中么?
请大家给出详细代码 谢谢了
现在用sql loader导入时提示
SQL*Loader-510: Physical record in data file (if03.txt) is longer than the maximum(1048576)
SQL*Loader-2026: the load was aborted because SQL Loader cannot continue.
可能是数据量太大么?
现在从客户的角度出发,就算能导入操作起来也不方便,请各位大侠能提供点代码,从程序中读入数据 并导入到相应的表中么?
请大家给出详细代码 谢谢了
还有字段间是用tab分割的
看看各位高手有好的办法么?
简单说就是把一个固定格式的大文件内容存入oracle一个表的相应字段中?
如果是,觉得效率低的话,用Pro*C做吧.
最少安装Oracle Client都安装了Pro*C/C++程序。通过这个程序可以编译成一个标准的PE文件.
估计也快不到那去呀
connection.Open();
OracleTransaction transaction = connection.BeginTransaction();
OracleCommand command = connection.CreateCommand();
command.Transaction = transaction;//注意!一定要用事务
command.CommandText = "...";//SQL语句
command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;//设置参数
command.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)command.Parameters[0].Value;//声明大数据类型
byte[] tempbuff = new byte[10000];//开缓冲区
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);//一定要用批处理
tempLob.Write(tempbuff,0,tempbuff.Length);
tempLob.EndBatch();
transaction.Commit();上面的例子是用System.Data.OracleClient...你也可以用效率更高的OracleAccess,用法查Oracle官方文档...
我是想把表导入的oracle数据库相应的表中
你写的我不是很懂 能像我说的情况举个例子么
我是想把表导入的oracle数据库相应的表中
你写的我不是很懂 能像我说的情况举个例子么
----------------
这个意思啊...那和大数据无关了...是数据导入的问题了...自己写个工具做...基本上就是解析文件->构造数据集->更新...或者...为txt建立一个OBDC数据源...再用工具更新...
300m的一个text文件考虑分批处理,你要把你这个txt文件分成多个文件;这个没有处理过
几十万条能在服务器上读出来么?
建表:
CREATE TABLE resumes (
employee_id NUMBER(6) PRIMARY KEY,
resume XMLType)
XMLType COLUMN resume
STORE AS CLOB;c#代码:
using Oracle.DataAccess.Types;
using Oracle.DataAccess.Client;第一步:将xml文件读成string型:
StreamReader sr = new StreamReader("E:\\my.net\\oracleXmlTest\\mcc.xml");
string outstring = "";
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine()) != null)
{
outstring += line;
}
或者直接:
XmlDocument xDocument = new XmlDocument();
xDocument.Load("E:\\my.net\\oracleXmlTest\\mcc.xml");
第二步:定义OracleXmlType
// OracleXmlType cxml = new OracleXmlType(conn, outstring);
OracleXmlType cxml = new OracleXmlType(conn, xDocument);
第三步:
OracleConnection conn = new OracleConnection("Data Source=GISORA;User Id=meng;Password=meng");
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO resumes VALUES (15,:pb)";
cmd.Parameters.Add("pb", OracleDbType.XmlType, iSize).Value = cxml;
cmd.ExecuteNonQuery();
conn.Close();
朋友们还有好方法么?
我是有库结构的 我只是想把相应的字段导入到表中对应的字段中
你这个方法可能不行吧
bcp好像不能导入到oracle中吧
有用过sqlloader的么???
楼上那个事务有点晕,
如果一个数据出错,300多M 全部事务RollBack..
我估计要导个几百次,每次花个10分钟吧。
blob 什么clob,
如果我没有记错的话应该是可以存几个G没有问题!
http://download-east.oracle.com/docs/cd/B19306_01/appdev.102/b14250/oci05bnd.htm#sthref805
关键是SerializationInfo和SerializationInfo,我也不是很熟,你可以看看msdn,帮你找了相关资料:
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref11/html/T_System_Runtime_Serialization_SerializationInfo.htm
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref11/html/T_System_Runtime_Serialization_StreamingContext.htm
的确是这个问题 已经发现了 但还是很感谢
感谢大家了