【问题标题】:What is the easiest way to 'dump' a temp-table into SQL format将临时表“转储”为 SQL 格式的最简单方法是什么
【发布时间】:2013-02-18 15:31:13
【问题描述】:

版本:10.2b

假设我正在准备一只餐桌狗:

table: dogs 
fields: name, age, breed

我想使用标准加载实用程序将它们加载到 oracle 数据库中。但是oracle中的表是这样的

table: dog
fields: name, age, date_last_updated

所以,如果我制作了一个与之匹配的临时表,有没有办法将临时表“转储”到 sql 中? (以便我可以将其加载到 oracle 中)

如果不是,那也是一个很好的答案。

感谢您的帮助!!

编辑: 我的意思是“sql 转储”:

INSERT INTO dog
VALUES (Max, 5, Feb 18, 2013)

除了将“INSERT INTO”字样导出到我的文件中之外,还有什么方法可以以这种格式获取表格。

【问题讨论】:

    标签: progress-4gl openedge


    【解决方案1】:

    使用支持 ODBC 的数据库管理工具(例如DBeaver),您可以 连接到进度数据库并将表和视图导出到 SQL 插入。

    【讨论】:

    • 是的,我虽然是这样,但我需要加载的表与我的进度表不同。这就是为什么我可能会导出一个临时表。
    • 我认为应该不仅可以导出表,还可以导出查询结果或视图。这样你就可以改变表结构。
    【解决方案2】:

    根据您的问题,这样的事情会起作用。您还可以将“TT”引用替换为实际的表名。

    OUTPUT TO VALUE("sqldump").
    
    FOR EACH tt-dogs:
    
      PUT UNFORMATTED
         "INSERT INTO dog VALUES (" tt-dogs.dog-name tt-dogs.age TODAY ")" SKIP.
    
    END.
    
    OUTPUT CLOSE.
    

    【讨论】:

      【解决方案3】:

      感谢您的澄清。

      在 4GL 中,转储表(真实表或临时表)的“自然”方式是使用 EXPORT 语句创建文本文件。像这样:

      /* export the dog record as-is
       */
      
      output to "dog.d".
      for each dog no-lock:
        export dog.
      end.
      output close.
      

      或:

      /* export modified dog records
       */
      
      output to "dog.d".
      for each dog no-lock:
        export dog.name dog.age now.
      end.
      output close.
      

      Oracle: Import CSV file 建议可以将 CSV 文件导入 Oracle,因此您可以像这样修改上面的代码以创建逗号分隔的文件,而不是使用 Progress 的默认空格分隔符:

      /* export modified dog records to a CSV file
       */
      
      output to "dog.csv".
      for each dog no-lock:
        export delimiter "," dog.name dog.age now.
      end.
      output close.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        • 2014-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多