100分求一条数据导出语句

heliangtai 2009-11-13 10:26:25
现在这个数据库的数据非常多,全部导出有100G之大;而我现在只需要导出部分数据(08-09年所有表产生的新数据)。
08年以前的数据没有备份。
...全文
226 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
kbzl251 2009-11-30
  • 打赏
  • 举报
回复
关注中..
yonghengdizhen 2009-11-26
  • 打赏
  • 举报
回复
如果有合适的分区管理,用交换表分区是最快的方法
cuizg 2009-11-26
  • 打赏
  • 举报
回复
如果原来没有做分区表管理的话,可以根据筛选条件建分区表,将业务数据移入分区表,然后对分区表执行导出操作,这样速度会快一些,而且便于今后的管理
duanzhi1984 2009-11-14
  • 打赏
  • 举报
回复
应该不可以,除非你一个一个的导到相同的数据结构种。

以前我们公司就是这样移数据的
sjm5210 2009-11-14
  • 打赏
  • 举报
回复
好像不可以,我们以前都是建库时为年表或月表,到时只需要备几个表就可以。
KingSunSha 2009-11-14
  • 打赏
  • 举报
回复
绝大多数数据库系统中记录都是相关联的,也就是说绝大多数情况下08-09年所有表产生的新数据是不能完整表达业务逻辑的。比如销售系统中,08/09产生的销售记录很可能是针对04/05年就产生的客户,或者06/07能就开始销售的产品,只导出08/09年的记录往往是不能用于完整的测试方案的。

这种情况下的部分数据导出只能是根据业务逻辑,找一个起始表,导出其中08/09年的数据,然后用代码搜索所有相关数据,放入临时表中,最后导出。
sxq129601 2009-11-14
  • 打赏
  • 举报
回复
路过观察
shiyiwan 2009-11-13
  • 打赏
  • 举报
回复
导出数据做什么用的?

试试AUL吧

http://www.anysql.net/
zhangwonderful 2009-11-13
  • 打赏
  • 举报
回复
首先建立一个1.txt文件:

tables=employee

file=f:exp.dmp
query="where birthday>= to_date('1980-12-18','yyyy-mm-dd')"

然后:

exp user/password@sid parfile=1.txt
  • 打赏
  • 举报
回复
利用select语句进行将08~09的数据查出来放到临时表中,然后mysqldump命令导出临时表就ok

cosio 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 inthirties 的回复:]
引用楼主 heliangtai 的回复:
现在这个数据库的数据非常多,全部导出有100G之大;而我现在只需要导出部分数据(08-09年所有表产生的新数据)。
08年以前的数据没有备份。



有没有可以通过query找到这些记录的,如果可以的话 exp可以用query过滤的。
[/Quote]

如果表很多,字段也不一样,这样子也挺麻烦的!
inthirties 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 heliangtai 的回复:]
现在这个数据库的数据非常多,全部导出有100G之大;而我现在只需要导出部分数据(08-09年所有表产生的新数据)。
08年以前的数据没有备份。

[/Quote]

有没有可以通过query找到这些记录的,如果可以的话 exp可以用query过滤的。
cosio 2009-11-13
  • 打赏
  • 举报
回复
先建一个实例,把现在的数据导出,在导入到新建的实例,然后在这个实例中遍历表,一个一个来删除!
oldmeng 2009-11-13
  • 打赏
  • 举报
回复
先创建辅助表,把要导出的数据都选出来,另存在辅助表里,再把辅助表导出来。
这个办法非常麻烦,但是也能解决你的问题。

也期待更高高手来给解决。
Adebayor 2009-11-13
  • 打赏
  • 举报
回复
关注ing
lengyunfei006 2009-11-13
  • 打赏
  • 举报
回复
貌似没辙啊,mark here!
cosio 2009-11-13
  • 打赏
  • 举报
回复
这个好像没有好的解决办法!
heliangtai 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhangwonderful 的回复:]
首先建立一个1.txt文件:

tables=employee

file=f:exp.dmp
query="where birthday>= to_date('1980-12-18','yyyy-mm-dd')"

然后:

exp user/password@sid parfile=1.txt
[/Quote]
似乎没用
heliangtai 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cosio 的回复:]
先建一个实例,把现在的数据导出,在导入到新建的实例,然后在这个实例中遍历表,一个一个来删除!
[/Quote]
这样还不是全部导出,有这个功夫我就不用在这儿来问了,呵呵。另外oracle版本是9i
heliangtai 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 georgesun 的回复:]
如果你是归档日志,而且还有08-09年的归档日志存在,也许有希望。
个人认为08-09年所有表产生的新数据,好像没见过要这样的业务数据,如果需要,应该从系统设计上保留所有历史。
[/Quote]
需求是这样的,数据库是征管系统数据库,我们现在需要一些最新的数据用来测试系统,要求用最新的真正数据测蔗,而不需要所有的数据。
因此才需要这样的导
加载更多回复(4)

3,497

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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