如何把正确的将excel表中的数据通过PL/SQL Developer添加到oracle数据库中

TL86_Sun 2011-11-18 04:10:14
在工作中,我在向数据库库中添加数据的时候通常for update的方式,然后进行复制粘贴的方式,但是很多前辈告诉我这样做很不规范,容易出现死锁等一系列问题,所以向各位大侠请教,望给予赐教。
...全文
323 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangshy85 2011-12-15
  • 打赏
  • 举报
回复
楼主你找到合适的方法了没有啊?我也遇到同样的问题
xlh0053 2011-12-15
  • 打赏
  • 举报
回复
select * from table_name where 1=2 for update
执行然后点那把锁,然后点击数据表格成全选状态,然后再把EXCEL里面的数据复制进去,然后再上锁,然后在F10
TL86_Sun 2011-12-14
  • 打赏
  • 举报
回复
谢谢各位了,我会继续努力的
灿烂千阳i 2011-12-12
  • 打赏
  • 举报
回复
我也是新手,推荐最近学的一个笨方法,见笑了~
建立一个 .sql文件
文件内容是要执行的插入语句:
insert into A(...)values();
....(复制粘贴)
insert into A(...)values();

然后在command window 下 执行:@(文件所在位置)\(文件名).sql

呵呵 就这些,笨方法
freeman0526 2011-12-12
  • 打赏
  • 举报
回复
粘贴都是用数据量少的excel,用where 1=2 就行了。不过就是要先校验数据呢。
TL86_Sun 2011-11-25
  • 打赏
  • 举报
回复
哦,知道,谢谢您,也谢谢给予我回答的各位,作为一个新人能在这里提问并得到细心的回答,真的是没想到,我一定好好努力,也希望各位多多帮助。谢谢了!
BenChiM888 2011-11-25
  • 打赏
  • 举报
回复

select * from table_name for update;
--这样会把这个表里的所有记录查出来锁住,影响别人更新、删除操作。
select * from table_name where 列名='1' for update;
--这个会把这个表里的所有列名='1'的记录查出来锁住,影响别人更新、删除操作。
--同时,你只是insert 并不会用到这些记录,因此你锁住记录就是不应该的,
----所以 where 1=2 就是起到这个作用,至于添加么,肯定是不影响的了,你试试不就知道了。


[Quote=引用 14 楼 tl86_sun 的回复:]
哦,那既然他是false,那这样写完之后,我还能把数据加进去吗
[/Quote]
不要悲剧人生 2011-11-24
  • 打赏
  • 举报
回复
你不想锁表,教你一个笨办法,,,create table TABLE_B AS SELECT *FROM TABLE_A WHERE 1=2
先创建一张表,然后对创造的TABLE_B进行for update,数据加完后,提交,再把 TABLE_B表的数据insert into 到TABLE_A中。。。。这样锁表TABLE_A的时间就短了。
TL86_Sun 2011-11-24
  • 打赏
  • 举报
回复
哦,那既然他是false,那这样写完之后,我还能把数据加进去吗
BenChiM888 2011-11-24
  • 打赏
  • 举报
回复
right!

[Quote=引用 12 楼 lxpbs8851 的回复:]
1=2 代表什么 代表false
这样就不会锁住记录了。
[/Quote]
oO寒枫Oo 2011-11-24
  • 打赏
  • 举报
回复
1=2 代表什么 代表false
这样就不会锁住记录了。
TL86_Sun 2011-11-24
  • 打赏
  • 举报
回复
我是新人,请问一下
select * from table_name where 1=2 for update;
中的 1=2 代表什么
oO寒枫Oo 2011-11-24
  • 打赏
  • 举报
回复
存为 csv 然后用文本导入器 导入
for update 会产生锁的 你查询多少条记录 就锁多少行
查询多表 就锁多表
cosio 2011-11-24
  • 打赏
  • 举报
回复
可以先验证好后,在导入!
dingjian192003 2011-11-24
  • 打赏
  • 举报
回复
SQLSEVER里有一个类似的工具,我以前EXCEL数据导ORACLE一直用它的。
TL86_Sun 2011-11-24
  • 打赏
  • 举报
回复
一楼前辈提供的参考文章正是我现在用的方式,但是我的导师告诉我,尽量不要用这种方式,因为excel表里可能会有残留的空格等问题,对数据库造成不良影响,有没有更好地办法,确保万无一失呢?
BenChiM888 2011-11-24
  • 打赏
  • 举报
回复
谁让你用update了。
你不是复制粘贴么。

[Quote=引用 5 楼 tl86_sun 的回复:]
补充一下,我是想把几十条或者几百条数据插入数据库,如果用update可能会很费时费力
[/Quote]
TL86_Sun 2011-11-24
  • 打赏
  • 举报
回复
补充一下,我是想把几十条或者几百条数据插入数据库,如果用update可能会很费时费力
TL86_Sun 2011-11-24
  • 打赏
  • 举报
回复
初来咋到,非常感谢各位的帮助
cosio 2011-11-18
  • 打赏
  • 举报
回复
select * from table_name where 1=2 for update;
这样不会锁住别人的记录,然后你再往里面站数据呗。
加载更多回复(2)

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧