V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
elsagong
V2EX  ›  程序员

Oracle 表结构有办法导入 PostgreSQL 吗?或如何快速导出不带数据的表结构?

  •  
  •   elsagong · 2018-09-03 22:29:59 +08:00 · 5334 次点击
    这是一个创建于 2272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家晚上好,咨询下数据库大神:Oracle 数据库有办法将表结构导入 PostgreSQL 吗?才接触 oracle,一头雾水。

    目的不是迁移数据库,而是本地程序调用第三方软件 Oracle 中的数据,从而显示 Oracle 中的实时数据。

    如果不能直接导表结构到 PostgreSQL,如何才能快速导出不带数据的表结构?上百个表单,17GB 多的数据。。。先提前感谢了~💐🍻

    38 条回复    2018-09-06 15:55:27 +08:00
    liprais
        1
    liprais  
       2018-09-03 22:50:20 +08:00
    这俩数据库 ddl 不兼容,别想了
    elsagong
        2
    elsagong  
    OP
       2018-09-03 22:58:53 +08:00
    @liprais 那我可以光把表结构导出来吗?不导数据,想先了解数据库结构,在 PostgreSQL 中建立一模一样的表名和字段,再利用 Django 的 multi-db 来访问 oracle 数据库
    tenwx
        3
    tenwx  
       2018-09-03 23:05:59 +08:00
    wqawd520
        4
    wqawd520  
       2018-09-03 23:19:15 +08:00
    在 plsql 中找到那个表,右键 viewTable 还是什么的,就是打开表结构,最右面有个 viewSql,点击按钮,就会出现表结构语句。修改修改就能用了
    liprais
        5
    liprais  
       2018-09-03 23:55:46 +08:00
    beginor
        6
    beginor  
       2018-09-04 06:23:28 +08:00 via Android
    能连多种数据库的工具基本上都有这功能吧,navicat,database.net
    elsagong
        7
    elsagong  
    OP
       2018-09-04 08:08:22 +08:00 via iPhone
    @liprais 真的尝试搜索了很多了,可能是搜索的关键词不对?感谢你发我链接,我注意到有句“ Depending on the tool you are using, you may need to run set long 10000 first, that tells SQL*Plus to display the first 10,000 bytes of any LOB that is selected. If your DDL is longer, set a larger value.” 我有 17.6GB 的数据,岂不是要执行 set long 176000000..bytes ?我看到里面讲述的是显示表单里的的所有行吗?没有看到有导出的 SQL 语句。。。
    elsagong
        8
    elsagong  
    OP
       2018-09-04 08:10:13 +08:00 via iPhone
    @wqawd520 可能是我表述不太清楚,我想导 oracle 数据库的表结构,大哥,你让我在 psql 里改什么表😂
    wtks1
        9
    wtks1  
       2018-09-04 08:27:26 +08:00 via Android
    @elsagong 他的意思是让你在那里看建表语句,然后自己改改再用到新的数据库里
    singerll
        10
    singerll  
       2018-09-04 08:31:15 +08:00 via Android
    etl 工具,就是干这个活的
    oracle128g
        11
    oracle128g  
       2018-09-04 08:40:44 +08:00 via iPhone
    kettle 完美解决您的问题
    bpllzbh
        12
    bpllzbh  
       2018-09-04 08:43:19 +08:00 via iPhone
    好像有个叫 spoon 的工具
    weizhen199
        13
    weizhen199  
       2018-09-04 08:46:25 +08:00
    试试 datax
    elsagong
        14
    elsagong  
    OP
       2018-09-04 08:57:47 +08:00
    天呐,四个人推荐四种方法,有一样重复也好啊!我要凌乱了
    elsagong
        15
    elsagong  
    OP
       2018-09-04 09:15:27 +08:00
    @oracle128g 我下载他们官网的安装包,按照安装步骤来双击 Data Integration,Mac 系统下没有一点反应😂这个软件是不是下线了😂
    miniliuke
        16
    miniliuke  
       2018-09-04 09:24:20 +08:00 via Android
    @elsagong spoon 就是 kettle,kettle 图形界面就叫 spoon
    miniliuke
        17
    miniliuke  
       2018-09-04 09:24:59 +08:00 via Android
    @elsagong 还有 kettle 就是一种 etl 工具
    saulshao
        18
    saulshao  
       2018-09-04 09:27:27 +08:00
    我记得 Django 有一个功能,允许你从现有的数据库生成模型文件。
    这个模型文件就是标准的 Python 代码,从这个代码按道理是可以将这个结构生成到 PLSQL 的。
    elsagong
        19
    elsagong  
    OP
       2018-09-04 09:28:15 +08:00 via iPhone
    @wtks1 我有一百多个表,建表语句直接在 SQL developer 表单 view 里的 SQL 就能直接看到,我想一次性全部导出表单结构
    elsagong
        20
    elsagong  
    OP
       2018-09-04 09:28:54 +08:00 via iPhone
    @saulshao 我搜搜看,谢谢你啦
    elsagong
        21
    elsagong  
    OP
       2018-09-04 09:52:37 +08:00
    @miniliuke 明白了,谢谢你,这个软件还是安装不到我的系统里,我不得不搜索其他方法了。。。
    totland
        22
    totland  
       2018-09-04 10:04:53 +08:00
    exp rows=n sqlfile=xx.sql
    miniliuke
        23
    miniliuke  
       2018-09-04 10:30:38 +08:00 via Android
    @elsagong 这个软件不需要安装绿色的.......
    pythonee
        24
    pythonee  
       2018-09-04 10:44:45 +08:00
    迁移服务是个专业性比较强的活
    TommyLemon
        25
    TommyLemon  
       2018-09-04 11:17:46 +08:00
    试试 Navicat,不行的话就写代码吧,读取 Oracle 的表结构,生成 PostgreSQL 的 DDL 并连接 PostgreSQL 数据库来执行
    mingl0280
        26
    mingl0280  
       2018-09-04 11:33:38 +08:00
    Navicat Premium 支持互导,但是会出很多错
    yanzixuan
        27
    yanzixuan  
       2018-09-04 12:46:23 +08:00
    @saulshao 那你得先搞到 oracle 得表结构,sqlacdodegen 了解一下?
    likuku
        28
    likuku  
       2018-09-04 12:56:56 +08:00 via iPhone
    有专业公司提供付费迁移的服务的,以前基于 pg 的 enterprise database 产品和公司 记得就是干这个事
    oracle128g
        29
    oracle128g  
       2018-09-04 13:16:44 +08:00
    elsagong
        30
    elsagong  
    OP
       2018-09-04 13:53:16 +08:00 via iPhone
    @pythonee 目的不是迁移数据库,而是本地程序调用第三方软件 Oracle 中的数据,从而显示 Oracle 中的实时数据。
    elsagong
        31
    elsagong  
    OP
       2018-09-04 14:00:25 +08:00
    @oracle128g @miniliuke 感谢二位,这个软件针对 Mac 系统的安装真的有点奇葩,我就是从官方下载的,按步骤双击文件安装无反应,通过 brew install 安装好了,在终端 /命令行捣鼓了半天,就是无法进入 kettler 输入命令的地方。无论如何,现在已经安装好,在研究怎么导表格了,通过这个文章解决的,竟然要来回拖拽两次到程序目录😂http://www.page.keyllo.com/mac/linux/2017/05/25/mac-kettle.html
    elsagong
        32
    elsagong  
    OP
       2018-09-04 14:06:19 +08:00
    @yanzixuan 我搜搜,谢谢你啦,@totland 谢谢你,不过 `exp rows=n sqlfile=xx.sql` 这样导应该和手动 export 导出一样吧?是带了表中数据的,总共 17.6GB ,我的小本本还没导到天荒地老,恐怕电脑就挂😂不行哦 @mingl0280 @TommyLemon 感谢对于 Navicat 的建议,我安装好了 kettle,先研究这个方法了,虽然官方文档不太友好😑
    oracle128g
        33
    oracle128g  
       2018-09-04 15:26:36 +08:00 via iPhone
    @elsagong 在软件菜单栏工具选项中有个叫向导的东西,里面官方提供了单表和多表复制向导,你可以试试,不过得先创建好 2 个数据库连接这个选项才是 enabled
    elsagong
        34
    elsagong  
    OP
       2018-09-04 17:52:06 +08:00 via iPhone
    @oracle128g 嗯嗯,下午一直在导,谢谢你哦,就是有几个表导入失败,就跳过导其他了,你知道怎么导入不带数据的表结构吗?原数据太多,我想只导表和字段就好
    iwiki
        35
    iwiki  
       2018-09-04 21:48:55 +08:00
    navicat 试试
    fyourm
        36
    fyourm  
       2018-09-05 09:01:19 +08:00
    navicat 有一个数据同步功能,我的项目里有个定时任务,每天从 PostgreSQL 里同步一张表的数据到 oracle,反过来没有试过
    elsagong
        37
    elsagong  
    OP
       2018-09-06 10:04:06 +08:00 via iPhone
    @fyourm 嗨,咨询一下你,两个数据库的数据同步,是不是表名和字段设置全部要一模一样
    elsagong
        38
    elsagong  
    OP
       2018-09-06 15:55:27 +08:00 via iPhone
    @oracle128g 嗨,外键等关系是不是没有办法导过来?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2676 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:37 · PVG 20:37 · LAX 04:37 · JFK 07:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.