大数据文件导入MySql处理方式
来源:互联网 发布:儿童英语配音软件 编辑:程序博客网 时间:2024/05/16 17:42
采用ADO.NET将数据文件导入到MySQL数据库中,如果数据文件大于200M,在进行导入过程中,很容易出现内存不足的问题,因此对数据文件需要考虑分批加载到二进制字段中,在MySQL中有个CONCAT函数,可以用于实现将字段中追加内容,代码如下:
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into observerdatatable(");
strSql.Append("SID,SName,YDOY,ObFile,QuaAnaStatues");
strSql.Append(") values (");
strSql.Append("@SID,@SName,@YDOY,@ObFile,@QuaAnaStatues");
strSql.Append(") ");
MySqlParameter[] parameters = {
new MySqlParameter("@SID", MySqlDbType.VarChar,50) ,
new MySqlParameter("@SName", MySqlDbType.VarChar,20) ,
new MySqlParameter("@YDOY", MySqlDbType.VarChar,5) ,
new MySqlParameter("@ObFile", MySqlDbType.LongBlob) ,
new MySqlParameter("@QuaAnaStatues", MySqlDbType.Int32)
};
parameters[0].Value = model.SID;
parameters[1].Value = model.SName;
parameters[2].Value = model.YDOY;
System.IO.FileInfo Ofi = new System.IO.FileInfo(OFile);
var Ostream = Ofi.OpenRead();
long maxreadlenth = 20000000;
long readlength = maxreadlenth < Ofi.Length ? maxreadlenth : Ofi.Length;
byte[] Obuffer = new byte[readlength];
Ostream.Read(Obuffer, 0, (int)readlength);
parameters[3].Value = Obuffer; //开始先读取部分数据插入到字段中
parameters[4].Value = model.QuaAnaStatues;
DbHelperMySQL.ExecuteSqlNonQuery(strSql.ToString(), parameters);
long rlenth = Ofi.Length - readlength; //剩余字节
while (rlenth > 0) //依次从数据文件读取指定长度字节追加到字段中
{
if (rlenth > maxreadlenth)
{
Ostream.Read(Obuffer, 0, (int)maxreadlenth);
model.ObFile = Obuffer;
AppendOFile(model);
}
else
{
readlength = rlenth;
Obuffer = new byte[readlength];
Ostream.Read(Obuffer, 0, (int)readlength);
model.ObFile = Obuffer;
AppendOFile(model);
break;
}
rlenth = rlenth - maxreadlenth; //剩余字节
}
Ostream.Close();
AppendOFile函数如下:
public static void AppendOFile(SDCORS.DataBase.Model.observerdatatable model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update observerdatatable set ");
strSql.Append(" ObFile = CONCAT(ObFile, @ObFile)"); //采用CONCAT函数连接字段值和添加部分字段
strSql.Append(" where SName=@SName and YDOY=@YDOY");
MySqlParameter[] parameters = {
new MySqlParameter("@ObFile", MySqlDbType.LongBlob) ,
new MySqlParameter("@SName", MySqlDbType.VarChar,20) ,
new MySqlParameter("@YDOY", MySqlDbType.VarChar,5)
};
parameters[0].Value = model.ObFile;
parameters[1].Value = model.SName;
parameters[2].Value = model.YDOY;
DbHelperMySQL.ExecuteSqlNonQuery(strSql.ToString(), parameters);
}
- 大数据文件导入MySql处理方式
- Hive导入大数据文件
- c-tree数据库的大数据文件处理方式
- 多线程处理大数据文件
- 脚本处理大数据文件
- MySql 数据文件默认位置&导入数据文件
- mysql数据文件的导入导出
- Mysql导入大文件的处理
- java 读取大数据文件,处理大数据文件性能比较?
- MySQL导入TxT数据文件和格式化输出
- mysql 导入数据文件/文本文件 后 中文乱码
- MySQL如何导入csv格式数据文件解决方案
- MySQL中数据库批量导入.SQL数据文件
- txt数据文件 l批量导入mysql
- 如何处理大数据文件+录入数据
- phpExcel 读取数据,大数据文件处理方案
- python结合mongodb处理阿里大数据文件
- 不小心删除数据文件的处理方式
- 在线查android 源码
- @自定义注解
- Java Web学习总结(25)——MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- 网络安全协议比较(PKI SSH SSL SET)
- 如何解决XMLHttpRequest cannot load file~~~~~~~Origin 'null' is therefore not allowed access
- 大数据文件导入MySql处理方式
- Unity NGUI灰化Shader
- HDU 1014 Uniform Generator
- adb 查看WIFI密码
- android - 自定义(组合)控件 + 自定义控件外观
- easyui 改变下拉框高度
- 【图论】【二分图匹配】[POJ 3041]Asteroids
- 黑马程序员--静态,接口,内部类,抽象类
- pointless comparison of unsigned integer with zero