在asp.net中如何对oracle数据库执行批量插入数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在asp.net中如何对oracle数据库执行批量插入数据?相关的知识,希望对你有一定的参考价值。

导出的话,在查询结果中选中查询结果右单击就有 COPY TO EXCEL这个选择的,导入是有点麻烦的,如果你数据少的话建议参考下边的F方法。
=========================================================
将excel数据导入oracle中 A、有一个比较麻烦但保证成功的方法。
1、在本地创建一个Access数据库,将Excel数据先导入到Access。可直接导入点击鼠标右键,选择导入,文件类型选择要导入的Excel文件,也可通过创建宏用TransferSpreadsheet函数实现。
2、在本地创建ODBC,链接oracle数据库。将oracle中需要导入数据的表以链接表的方式在本地Access中创建(千万不要使用导入表)。
3、在Access数据库中创建插入查询将导入好的Excel数据导入到oracle中。

此方法保证成功。

B、也可以导入sql server 用它的导出工具导入oracle 但对一些image字段支持不好,你如果
没这种字段就行。

用MS_sqlserver 提供的数据导出导入功能可以方便的把excel方便的导入oracle数据库

C、一种方法:
先把Excel另存为.csv格式文件,如test.csv,再编写一个insert.ctl
用sqlldr进行导入!
insert.ctl内容如下:
load data --1、控制文件标识
infile 'test.csv' --2、要输入的数据文件名为test.csv
append into table table_name --3、向表table_name中追加记录
fields terminated by ',' --4、字段终止于',',是一个逗号
(field1,
field2,
field3,
...
fieldn)-----定义列对应顺序

注意括号中field排列顺序要与csv文件中相对应
然后就可以执行如下命令:
sqlldr user/password control=insert.ctl

有关SQLLDR的问题

控制文件:input.ctl,内容如下:
load data --1、控制文件标识
infile 'test.txt' --2、要输入的数据文件名为test.txt
append into table test --3、向表test中追加记录
fields terminated by X'09' --4、字段终止于X'09',是一个制表符(TAB)
(id,username,password,sj) -----定义列对应顺序

其中append为数据装载方式,还有其他选项:
a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录,替换成新装载的记录
d、truncate,同上

问题:SQLLDR能不能保留表中原有的数据,如果发现KEY重复时,再UPDATE对应的记录?

D、先?EXCEL文件??成TXT文件
再使用SQLLOADER

E、将EXCEL文件保存成*.csv格式. 然后用sqlload来导入表中.

sqlload是Oracle自带的数据倒入工具,应该是没有可视化工具的(至少我一直用命令行)。
直接在命令行下敲入sqlldr即可得到帮助。

F、如果你的单个文件不大的情况下(少于100000行), 可以全选COPY ,然后用PL/SQL.:
select * from table for update. 然后打开锁, 再按一下加号. 鼠标点到第一个空格然后粘贴. COMMIT即可.(小窍门, ORACLE不支持的, 但很好用, 不会有问题)
参考技术A 把取到的数据放到DataSet里,然后循环插入 参考技术B 学习中

在 ASP.NET MVC 项目中无法使用实体框架连接到 Oracle 数据库

【中文标题】在 ASP.NET MVC 项目中无法使用实体框架连接到 Oracle 数据库【英文标题】:Cannot connect to Oracle Database with Entity Framework in ASP.NET MVC project 【发布时间】:2017-08-09 09:56:28 【问题描述】:

上下文:我正在创建一个 Web 应用程序(在 ASP.NET MVC 4 中),它将提供对现有 Oracle 数据库的访问。我只需要能够从该数据库读取数据,无需插入或更新等。我在 Visual Studio Express 2015 for Web 中工作。

我已经搜索了很多问题的答案,但无济于事。

我的目标是首先使用实体​​框架数据库创建模型。我已使用 NuGet 将实体框架、Oracle.ManagedDataAccess 和 Oracle.ManagedDataAccess.EntityFramework 添加到我的项目中。 但是,当我尝试将“ADO.NET 实体数据模型”添加到我的模型时,无论是选择“数据库中的 EF 设计器”还是“数据库中的代码优先”,我都会得到以下信息:

我错过了什么?

我发现资源说我需要安装 Oracle Developer Tools for Visual Studio。但是,Visual Studio Express 不支持它,我无法更改我的 IDE。

我没有在这台开发计算机上安装 Oracle 客户端,但我是 sqldeveloper,使用它访问数据库没有问题。我需要安装 Oracle 客户端吗?通过 NuGet 安装的 dll 还不够吗?我问是因为我是实习生,安装任何新软件都需要验证,这需要相当长的时间。

【问题讨论】:

Man oracle db 不是微软的产品之一,所以他们不会把它放在那里,你需要从 nuget 下载连接器然后你才能连接它。 阅读this 谢谢瓦尔基里。但是,我已经阅读了您链接到我的内容,正如我在帖子中所说,我已经使用 NuGet 安装了库,但我无法安装 ODAC,因为 Visual Studio Express 不支持 ODT。因此,我首先提出了这个问题。 【参考方案1】:
    将您的数据库连接到您的项目 在空数据集中插入新项 在该数据集中,将工具箱中的 TableAdapter 插入您的数据集中。 弹出选择表的窗口(你可以写sql来选择需要的表) 在第 4 步之后。您拥有自己的实体。

【讨论】:

【参考方案2】:

我有同样的错误,我这样修复:

你需要安装:

带有 .NET Framework 4.5 或更高版本的 Microsoft Visual Studio 2015 或更高版本。

Oracle 数据库 12c 或更高版本。

来自 OTN 的 Oracle 数据访问组件 (ODAC) 12c 第 3 版 (12.1.0.2.1) 或更高版本。 ODAC 下载包括适用于 Visual Studio 和 ODP.NET 的 Oracle 开发人员工具

本教程所需的文件。 使用 NuGet 安装和配置 Oracle Data Provider for .NET 教程。(安装:来自 Nuget 的 Oracle.ManagedDataAccess.EntityFramework)。

参考:http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/2015/entityframework_linq_modelfirst/Entity%20Framework%20LINQ%20and%20Model%20First.html#overview

【讨论】:

以上是关于在asp.net中如何对oracle数据库执行批量插入数据?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net线程批量导入数据时通过ajax获取执行状态

如何批量执行sql查找替换?

使用asp.net 2.0中的SqlBulkCopy类批量复制数据

Oracle ASP.net 提供者模型对象性能

从 ASP.NET 中的 Oracle DB 函数读取数据表

ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)