需要用sqlloader来进行大量的数据导入。
1、首先,在数据库中要创建跟字段对应的表,并设置字段长度足够大。
2、根据创建的表名,及文本的格式编写脚本。保存成文件,名字为:loadctl
load datainfile 'resulttxt' --文本文件名
replace into table resultxt --插入的表名
(resultid char terminated by ',', --读取以逗号分隔的数据,下同
website char terminated by ',',
ipport char terminated by ',',
status char terminated by whitespace)
3、ctrl+win键,打开命令提示符。
4、执行以下语句:
sqlldr userid=用户名/密码@数据库实例 control=路径\resultctl log=路径\resulthisout5、等待导入完成即可。
可以现在excel表格输入相关的数据,然后在你的数据库里的“表”单击“新建”,选择“导入表”,再选择你要导入的表。或者是右击“表”,选择“导入”。如果找不到你的数据,就在打开的文件筐选择文件类型为excel,就可以了。
1将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉。。否则导入数据库后会有对应的空行),假如存到“D:\datatxt”这个位置里。
2根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命令
load data local infile 'D:/datatxt' into table exceltomysql fields terminated by '\t';
注意:盘符我使用的“/”才成功,否则提示找不到文件 下面文章中是用的“\”!
进行导入 *** 作
手动进行Excel数据和MySql数据转换
首先数据库存储数据有自己的格式:基本数据类型、二进制。。
怎么存储文件形式的数据?
1、针对txt文件,读取文本内容,数据库字段设置数据类型text,将读取的文本内容存入数据库。
2、转化为二进制存入数据库,读取文件,转化为二进制流,数据库字段设置bit,之后将二进制数据存入数据库,
3、将txt文件保存服务器制定目录下,在数据库中存储txt的绝对路径,访问时直接访问文件即可。
aspnet/c#代码实现excel to mssql数据导入
2008年12月17日 星期三 13:42
做网站项目时,可能会遇到将excel文件中的数据导入至sql server数据库的需求,把excel也看作数据库,使用OleDb连接后读取数据然后写入用SqlClient连接的sql server数据库即可,技术上没有什么难度。
但是需要考虑的一个问题是,系统安装的环境一般是专用sql server服务器+web服务器+客户端,而excel文件往往在客户端导入,如果直接使用sql语句读取的话,由于sql在web服务器上运行,不能读取到客户端的excel地址,就会出错了。
既然知道了错误的原因,解决方案也就有了:
1、把客户端的excel上传至web服务器上某文件夹,注意要给该文件夹设置网络用户的“写入”权限;
2、使用OleDb+sql语句读取web服务器上的excel文件
3、将读取的数据写入到sql server 数据库
4、将web服务器上的临时excel删除
部分代码如下:
string filename = FileUpload1PostedFileFileNameSubstring(FileUpload1PostedFileFileNameLastIndexOf("\\"));
FileUpload1PostedFileSaveAs(ServerMapPath("fileupload\\") + filename);//上传文件
string conn = "Provider=MicrosoftJetOLEDB40;Data Source=" + ServerMapPath("fileupload\\") + filename + ";Extended Properties=Excel 80";
string sqlin = "SELECT FROM [Sheet2$]";
OleDbCommand olecommand = new OleDbCommand(sqlin, new OleDbConnection(conn));
OleDbDataAdapter adapterin = new OleDbDataAdapter(olecommand);
DataSet dsin = new DataSet();
adapterinFill(dsin);
DataTable dtin = dsinTables[0];//连接并读取excel数据
for (i = 3; i <= totalrow; i++)//将Excel文件中第一个工作表的数据导入到sql数据库scjd_youliaoxiaohaojihua表中
{
string sql = "insert into scjd_youliaoxiaohaojihua(yuexuhao,danwei,youpin,cheliangmingchengxinghao,zichanxingzhi,chepaihao,qiyou,chaiyou,beizhu) values('";
int j;
sql += DropDownList1SelectedValueToString() + DropDownList3SelectedValueToString();
if (DropDownList1SelectedValueToString() != DateTimeNowYearToString() || intParse(DateTimeNowMonthToString()) != intParse(DropDownList3SelectedValueToString()))
{
sql += "20";
}
else
{
if (intParse(DateTimeNowDayToString()) < 10)
sql += "0";
sql += DateTimeNowDayToString();
}
if (i-3 + count < 9)
sql += "00";
else if (i-3 + count < 99)
sql += "0";
sql += (i -3 + 1 + count)ToString();
sql += "','";
for (j = 1; j < 8; j++)
{//遍历Excel表中一行的所有列,除最后一列
sql += dtinRows[i][j]ToString()Trim();
sql += "','";
}
sql += dtinRows[i][8]ToString()Trim();
sql += "')";
try
{
DoSql(sql);
}
catch (Exception eeeeeee)
{
ResponseWrite("<script>alert('数据导入错误,请检查Excel文件')</script>");
return;
}
}
FileInfo file = new FileInfo(ServerMapPath("fileupload/") + filename);
if (fileExists)
{//删除文件
fileDelete();
}
protected void DoSql(string sql)//执行sql语句的函数
{
SqlConnection conn = new SqlConnection();//创建连接对象
connConnectionString = ConfigurationManagerAppSettings["conn"]ToString();//给连接字符串赋值
connOpen();//打开数据库
SqlCommand cmd = new SqlCommand(sql, conn);
cmdExecuteNonQuery();//
connClose();//关闭数据库
}
注:
1、本文代码均取自我最近刚做的一个小项目,部分数据有较强针对性,并不通用,只有思路通用
2、由于能力和水平问题,部分代码显得有些笨拙,若能灵活运用存储过程,应能大幅度简化代码 只要你的文件能够用记事本打开并格式正确,就可以把他认为是文本文件进行处理
象这种格式的数据没有什么太好的办法,只有从文本文件中逐行读取解析,当读到完整的记录时执行SQL语句插入到数据库中
附加数据库
或者导入数据库
sql本身有数据导入的 *** 作。但如果要从一个备份的文件中导入数据,则要进行另外的 *** 作。下面以一个例子进行说明。
sql服务器上已有一个doe数据库,并且里面有大量的数据,现准备从另外一个备份文件a1bak(不是doe数据库的备份文件)中导入另外的数据(即导入后在doe中增加一些数据表,表中已录有数据),并保持原doe的数据不变。
1、首先,在“sql企业管理器”中新建一个临时数据库a1。
2、右击a1数据库,选择:所有任务->还原数据库。
3、在“还原数据库”窗口中,选择:“从设备”。
4、点击“选择设备”。
5、点击“添加”。
6、从文件名中选择要还原的数据库文件,如a1bak。
7、点击“确定”,返回“还原数据库”窗口。
8、点击“选项”卡,进入选项设置。
9、钩选:“在现有数据库上强制还原”。
10、修改“移到物理文件名”为:“c:\a1ldf”、“c:\a1mdf”。
11、点确定,即可导入备份文件中的数据到临时数据库a1中。
12、此时,你可以将数据从a1导入到另外一真正要导入的数据库中,如doe数据库。
(下面的数据导入 *** 作为sql2000企业管理器的一般数据导入导出 *** 作。)
13、在“sql企业管理器”中选择“doe”数据库。
14、右击doe数据库,选择:所有任务->导入数据。
15、在“dts导入/导出向导”窗口的“选择数据源”中,数据源选择刚才建立并导入数据的临时数据库a1。点击下一步。
16、在“选择目的”中,系统已经默认为doe数据库。
17、连续点击“下一步”,直到完成。
经过上面的 *** 作,你已经成功地将备份文件a1bak中数据导入doe数据库中,并且doe数据库原有数据不变。
此时,你可以删除临时数据库a1。
1可以使用ETL工具,比如PowerCenter,Datastage,这个做的好处是可以直接自动调用,适合做完后定时、经常使用的场合。
2使用文本load,这种方式是先吧数据从源数据库导出至文本,然后使用Load命令导入数据库中,这个在最后导入的速度是最快的。
3其他程序的方法,一般来说到了执行阶段都是拼成Insert语句让数据库执行的,这样的速度都不会很快。
以上就是关于oracle怎样导入海量数据(100万+)全部的内容,包括:oracle怎样导入海量数据(100万+)、图书管理系统 大量的数据如何插入数据库、怎样把大量Excel数据导入到MySQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)