oracle怎样导入海量数据(100万+)

oracle怎样导入海量数据(100万+),第1张

需要用sqlloader来进行大量的数据导入。

1、首先,在数据库中要创建跟字段对应的表,并设置字段长度足够大。

2、根据创建的表名,及文本的格式编写脚本。保存成文件,名字为:loadctl

 load   data   

  infile   '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=路径\resulthisout

5、等待导入完成即可。

可以现在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数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9812933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存