SQL Developer 4.0 and the Command Line Interface (CLI)

thatjeffsmith SQL Developer 78 Comments

Tell Others About This Story:

SQL Developer has had a command-line interface of sorts. The primary use cases were for formatting files and running unit tests. However, we wanted to expand the support to include things like generating Carts and running reports.

Instead of just creating a few more one-off interfaces, we kind of started over and built a new CLI from scratch. Random Observation: Developers get very excited when they get to redo something.

Rather than call the main executable, we created a new one. So with SQL Developer version 4, when you run ‘sdcli.exe’ from the BIN directory, you’ll see something like this:

SQL Developer command line options

SQL Developer command line options

Please ignore the yellow highlighted text. That’s an error message that shouldn’t be appearing – a bug that we’ll have fixed for the next EA drop.

It’s the green part that’s more interesting!

Available features

What we have available now are the following features:

  • cart: Database Cart Batch Tasks
  • dba: Basic Batch DBA Tasks
  • format: SQL Format Task
  • migration: Database Migration Tasks
  • reports: Basic Batch Reporting Tasks
  • unittest: Unit Testing Batch Tasks

If I want to know the syntax for running one of these features, simply ask for it. Let’s look at Reports first. I reckon that this might be the most popular use case for the command-line interface.

Running Reports via the Command Line

If I run ‘sdcli64.exe reports’ – it will come back with the usage syntax for the reports option:

How do I run a report?

How do I run a report?

[text] Reports Usage:
reports <command> <command arguments>

Supported commands:
generate -report <path> -db <connection name> -file <output file> [-bind <bname>=<bvalue>]* generates an HTML report
[/text]

Ok, so let’s run a report and see what happens.

[text] C:\Users\jdsmith\Desktop\sqldeveloper\4.0 EA1\sqldeveloper\sqldeveloper\bin>sdcli64.exe reports generate -report "Demo for 4.0 Take Three" -db HR -file "C:\sqldev4.html"
Success!
[/text]

Let’s break down that command:

sdcli64.exe reports – this part I hope you get

generate – at this time, generating a report is the only feature exposed, so let’s do that

-report “Demo for 4.0 Take Three” – the name of the report, contains spaces, so I’m quoting it

-db HR – the database connection name to run the report against, requires you to have saved the password

-file “C:\sqldev4.html” – the output, where do we want it and what’s it going to be named

At the moment only HTML is available for output options.

Ok, let’s go look at the output – which in this case is an HTML file.

The HTML output from running my report

The HTML output from running my report

All of the charts should render in HTML WYSIWYG – what you see is what you get. I haven’t played with all 6400 new chart types yet, so let me know if you find one it breaks on.

Related Posts Plugin for WordPress, Blogger...
Tell Others About This Story:

Comments 78

  1. Hi Jeff,
    I’m trying to run a simple report using sdcli, but I cannot make it work……
    This is what I run and the error I get…

    [[email protected] bin]$ ./sdcli reports generate -report “tbs_cortado” -db DB11G -file “/home/oracle/Informes/Data/tbs_cortado.html”

    Oracle SQL Developer
    Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.

    Command failed:
    java.lang.IllegalArgumentException: null connection not allowed
    at oracle.dbtools.db.DefaultConnectionIdentifier.(DefaultConnectionIdentifier.java:29)
    at oracle.dbtools.db.DefaultConnectionIdentifier.createIdentifier(DefaultConnectionIdentifier.java:21)
    at oracle.dbtools.raptor.metadata.AbstractDisplayModel.getQuery(AbstractDisplayModel.java:393)
    at oracle.dbtools.raptor.metadata.AbstractDisplayModel.getQuery(AbstractDisplayModel.java:377)
    at oracle.dbtools.raptor.controls.display.html.TableHtmlGenerator.generateHtml(TableHtmlGenerator.java:63)
    at oracle.dbtools.raptor.controls.display.DisplayHtml.generateStyleSpecificHtml(DisplayHtml.java:391)
    at oracle.dbtools.raptor.controls.display.DisplayHtml.generateModelHtml(DisplayHtml.java:325)
    at oracle.dbtools.raptor.controls.display.DisplayHtml.generateHtml(DisplayHtml.java:261)
    at oracle.dbtools.raptor.controls.display.DisplayHtml.generate(DisplayHtml.java:202)
    at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReportTask.doWork(ReportsProcessor.java:101)
    at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReportTask.doWork(ReportsProcessor.java:39)
    at oracle.dbtools.raptor.backgroundTask.RaptorTask.call(RaptorTask.java:193)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$RaptorFutureTask.run(RaptorTaskManager.java:629)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)

    FYI, the report works fine in SQLDeveloper GUI, password connection is saved as required but I can’t make it work…….Am I missing something???

    Thanks in advance.
    Marcelo

    1. thatjeffsmith Post
      Author
        1. thatjeffsmith Post
          Author
  2. There is an issue reported by Ravi Shankar that sdcli unittest-run….. command works fine when executed through command line however receives error “Connection not found ” when same is executed through Jenkins. For me, Jenkins, SQL developer and Oracle XE is on local machine.

    1. thatjeffsmith Post
      Author

      Does Jenkins run as same OS user as the person running it on CLI? Connections are stored in the user’s home directory, so if they’re not there, SDCLI won’t know what your connection you’re asking for.

        1. Nevermind, I was able to fix this. Ran jenkins under my name and everything worked.

          Just want to ask one more thing. Is there any updates to SQL developer to perform static code analysis of PL/SQL objects. Currently it is provided in Toad and found Trivadis plugin to do the same in SQL developer. Want to know if there is any possibility of built-in feature.

          Thanks.

          1. thatjeffsmith Post
            Author
    1. thatjeffsmith Post
      Author
  3. I’m interested in exporting query results as XML. How would one go about doing that using sdcli.exe. I realize I might have to have a input.sql and output.xml arguments ready to go. 🙂

    1. thatjeffsmith Post
      Author
      1. Hi Jeff,

        I have a requirement to automate login to SQL Developer. Currently, I am trying to use AutoIT to remote control SQL Developer to get the user logged in. This is running on our Windows 2012 R2 server. Pushing keystrokes into SQL Developer is very unreliable (not sure why, but AutoIT and Java apps don’t seem to play well together). I started looking at SDCLI for this. It works great for “Basic” Oracle connections. I run ”
        sdcli migration -actions=mkconn
        -connDetails=MyDB:oracle:[email protected]:MyDBport:MyDB and then I run SQL Developer and the connection is there. Sweet! Problem is many of our DB connections are RAC systems and I need to use TNS to connect to those. I have not been able to get the SDCLI connect working for those. Is this not supported. If so, how do I setup my connection string to get SDCLI to use my tnsnames.ora file.

        Any help appreciated. Thanks.

        1. thatjeffsmith Post
          Author

          sdcli won’t help you – it’s for one off tasks, like exporting a schema to DDL files/zip

          what you want to do, can’t be done.

          the users will need to be able to make a connection on their own after they’ve started the tool.

  4. Since upgrading to sqldeveloper-4.2.0.16.260.1303-x64, none of my batched reports work. All reporting this error regardles of the connection i use

    NAVIGATOR HOOK PROCESS DESCRIPTORS LOAD TIME : 249ms
    Command failed:
    java.lang.IllegalArgumentException: null connection not allowed
    at oracle.dbtools.db.DefaultConnectionIdentifier.(DefaultConnectionIdentifier.java:29)
    blah blah blah

    This was a great feature, can anyone help???

  5. When I try to add a BIND variable like this [-bind REPORTNAME=VENDOR_ANALYSIS]
    to the end of the command the output states it was a success (from the user defined report) but when I open the HTML I think I see an error

    Bind Variable "REPORTNAME" is NOT DECLARED
     force_print
    

    . Is my syntax correct? The Bind Variable name of the user defined report is REPORTNAME

    1. I figured it out. My user defined report was a script instead of a table. After I changed it to table type the variable was able to be set.

      Thanks

  6. Hi

    I wish there was a way to open sqldeveloper connected to a database from cli, without any specific conf to be done. Like “sqldeveloper.exe login:paswd at server:port/SID”. That would be great with password soft like keepass.

    Any chance this may come up somewhen ?

    Cheers & regards,

    1. thatjeffsmith Post
      Author
    1. thatjeffsmith Post
      Author
  7. Hello… I’m wondering if this is possible to configure somewhere the size of the report file .PNG generated by using the command line sdcli64.exe. If yes ? How ?
    Currently, I’ve the impression that it’s too small ..

    1. thatjeffsmith Post
      Author
    1. thatjeffsmith Post
      Author
  8. DB Unit Testing (SQLDevloper Tool) using Test Runs Code Coverage Report Generation of each Test Case. And we Need to avoid the “Total_ Occurrence” Field/ Column which is representing a Empty lines/rows as 0 value.
    We need to Discuss/ the Customizing the SQL querys on SQL Devloper tool to get accurate the “Total Occurrence“ Value it should be either 1 or Null value .

  9. I am using SQL Developer on Mac OS X Yosemite.
    I am unable to run sdcli.sh.
    sdcli.sh was not executable, so I changed it with chmod u+x sdcli.sh.
    Now it will run, but I get this error:

    $ ./sqlcli.sh
    Listening for transport dt_socket at address: 8000

    and then it never goes anywhere.

    Any tricks up your sleeve to make this work?

    Oracle SQL Developer 4.1.0.17
    Version 4.1.0.17
    Build MAIN-17.29

    IDE Version: 12.2.1.0.42.141118.0806
    Product ID: oracle.sqldeveloper
    Product Version: 12.2.0.17.29

    Version
    ——-

    Component Version
    ========= =======
    Oracle IDE 4.1.0.17.29
    Java(TM) Platform 1.8.0_25

    NOTE: current production release (not early adopter) Oracle SQL Developer 4.0.3.16, Version 4.0.3.16, Build MAIN-16.84 on the Mac does not have the sdcli.sh at all.
    $ pwd
    /Applications/Oracle_Tools/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin
    $ ls -ltr
    total 2464
    -rw-r–r–@ 1 holbrook staff 83456 Sep 15 06:47 sqldeveloper64W.exe
    -rw-r–r–@ 1 holbrook staff 1175 Sep 15 06:47 sqldeveloper.conf
    -rw-r–r–@ 1 holbrook staff 340 Sep 15 06:47 sqldeveloper.boot
    -rw-r–r–@ 1 holbrook staff 445 Sep 15 06:47 sqldeveloper.bat
    -rw-r–r–@ 1 holbrook staff 204 Sep 15 06:47 sqldeveloper-nondebug.conf
    -rw-r–r–@ 1 holbrook staff 661 Sep 15 06:47 sqldeveloper-debug.conf
    -rw-r–r–@ 1 holbrook staff 415 Sep 15 06:47 sqldeveloper-Darwin.conf
    -rw-r–r–@ 1 holbrook staff 3220 Sep 15 06:47 sqldeveloper
    -rw-r–r–@ 1 holbrook staff 71205 Sep 15 06:47 splash.png
    -rw-r–r–@ 1 holbrook staff 71205 Sep 15 06:47 splash.gif
    -rw-r–r–@ 1 holbrook staff 363 Sep 15 06:47 logging.conf
    -rw-r–r–@ 1 holbrook staff 440 Sep 15 06:47 logging-debug.conf
    -rw-r–r–@ 1 holbrook staff 0 Sep 15 06:47 jdk.conf
    -rw-r–r–@ 1 holbrook staff 49279 Sep 15 06:47 SQLDeveloperIcons.icns
    -rw-r–r–@ 1 holbrook staff 854 Sep 15 06:48 sdcli.conf
    -rw-r–r–@ 1 holbrook staff 446 Sep 15 06:48 sdcli.boot
    -rw-r–r–@ 1 holbrook staff 99 Sep 15 06:48 sdcli-Darwin.conf
    -rw-r–r–@ 1 holbrook staff 586 Sep 15 06:48 sdcli
    -rw-r–r–@ 1 holbrook staff 136 Sep 15 06:52 version.properties

    $ more sdcli
    #!/bin/bash

    #=============================================================================
    # Launcher for Oracle SQL Developer
    # Copyright (c) 2005, Oracle. All rights reserved.
    #=============================================================================

    . “sqldeveloper”

    #—————————————————————————–
    # product-specific function overrides
    #—————————————————————————–
    GetFullProductName()
    {
    echo “Oracle SQL Developer”
    }

    GetShortProductName()
    {
    echo “SQL Developer”
    }

  10. When we are tyring to run sdcli from Jenkins windows prompt it is not able to find the connection.
    When the same bat file is run from normal command prompt it is working properly without any issues.
    We are invoking the same bat file from both the places.
    so not sure how to fix this issue.

  11. 15.21-x64\sqldeveloper\sqldeveloper\bin>sdcli64.exe reports generate -report “Demo for 4.0 Take Three” -db migratio_demo -file “C:\users\spattapu\html_Report\sqldev4.html”
    Command failed:
    java.lang.Exception: ‘Demo for 4.0 Take Three’ not found
    at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReport
    Task.model(ReportsProcessor.java:121)
    at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReport
    Task.doWork(ReportsProcessor.java:78)
    at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReport
    Task.doWork(ReportsProcessor.java:39)
    at oracle.dbtools.raptor.backgroundTask.RaptorTask.call(RaptorTask.java:
    193)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$RaptorFutureTa
    sk.run(RaptorTaskManager.java:554)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:47
    1)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
    java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
    .java:615)
    at java.lang.Thread.run(Thread.java:745)

    I am trying to generate html report I am facing the above error.Please suggest me.

    1. thatjeffsmith Post
      Author
      1. I’m getting the java.lang.Exception: ‘Report’ not found’ error and I’m using the correct report name.

        Do you have a working example of using Sql Developer reports in Jenkins?

        1. thatjeffsmith Post
          Author
          1. The report is working outside of jenkins. I can execute it in sql developer or via a bat file. I have underscores instead of spaces in the report name and I have tried a single word as the name of the report. I am using absolute paths.

            I have managed to get sql plus running the same query ran in the sql developer report via jenkins.

          2. thatjeffsmith Post
            Author
          3. Cannot reply to your latest comment.

            Jenkins is running as a different user that I created specifically for jenkins. I made it a member of the administrators group.

          4. thatjeffsmith Post
            Author
          5. When I run this command outside of jenkins, in local:
            D:\shixi\sqldeveloper\sqldeveloper\bin>sdcli64.exe reports generate -report “ab
            d” -db migratio_demo -file “C:\users\spattapu\html_Report\sqldev4.html”
            have the same error:
            java.lang.Exception: ‘“abd”’ not found
            at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReport
            Task.model(ReportsProcessor.java:121)
            at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReport
            Task.doWork(ReportsProcessor.java:78)
            at oracle.dbtools.raptor.report.headless.ReportsProcessor$GenerateReport
            Task.doWork(ReportsProcessor.java:39)
            at oracle.dbtools.raptor.backgroundTask.RaptorTask.call(RaptorTask.java:
            193)
            Please give me some advice for this issue…
            How to see the report name?

          6. thatjeffsmith Post
            Author
  12. C:\Test_tools\sqldeveloper\sqldeveloper\sqldeveloper\bin>sdcli64.exe
    java.lang.ExceptionInInitializerError
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:270)
    at oracle.ide.osgi.extension.internal.ClassLoaderProxy.loadMetaClass(
    ssLoaderProxy.java:121)
    at javax.ide.util.MetaClass.toClass(MetaClass.java:104)
    at javax.ide.util.MetaClass.toClass(MetaClass.java:95)
    at javax.ide.util.MetaClass.newInstance(MetaClass.java:138)
    at oracle.ide.javaxide.Util.createInstance(Util.java:62)
    at oracle.ide.javaxide.Util.createInstance(Util.java:42)
    at oracle.ideimpl.cmd.ShutdownHookHook.start(ShutdownHookHook.java:30
    at oracle.ideimpl.extension.LayerReader.callElementStart(LayerReader.
    a:339)
    at oracle.ideimpl.extension.LayerReader.scan(LayerReader.java:310)
    at oracle.ideimpl.extension.LayerReader.scanChildren(LayerReader.java
    0)
    at oracle.ideimpl.extension.LayerHookRegistry.scanHooks(LayerHookRegi
    y.java:343)
    at oracle.ideimpl.extension.LayerHookRegistry.loadHooks(LayerHookRegi
    y.java:278)
    at oracle.ideimpl.extension.LayerHookRegistry.fullyLoad(LayerHookRegi
    y.java:393)
    at oracle.ideimpl.extension.ExtensionManagerImpl._loadExtHooksCached(
    ensionManagerImpl.java:2005)
    at oracle.ideimpl.extension.ExtensionManagerImpl._loadExtensionHooks(
    ensionManagerImpl.java:1930)
    at oracle.ideimpl.extension.ExtensionManagerImpl.__loadExtensionHooks
    tensionManagerImpl.java:1902)
    at oracle.ideimpl.extension.SameThreadExtensionQueueLoadStrategy.load
    meThreadExtensionQueueLoadStrategy.java:28)
    at oracle.ideimpl.extension.ExtensionManagerImpl.fullyLoadExtension(E
    nsionManagerImpl.java:1651)
    at oracle.ide.IdeCore.startupImpl(IdeCore.java:1841)
    at oracle.ide.Ide.startup(Ide.java:758)
    at oracle.dbtools.headless.HeadlessStarter.startIde(HeadlessStarter.j
    :32)
    at oracle.ide.osgi.Activator.start(Activator.java:190)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(B
    leContextImpl.java:711)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startAc
    ator(BundleContextImpl.java:702)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(B
    leContextImpl.java:683)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bu
    eHost.java:381)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(Abs
    ctBundle.java:390)
    at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Fr
    work.java:1177)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeB
    les(StartLevelManager.java:559)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeB
    les(StartLevelManager.java:544)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL
    artLevelManager.java:457)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetSt
    Level(StartLevelManager.java:243)
    at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.internalS
    t(EquinoxLauncher.java:271)
    at org.eclipse.osgi.framework.internal.core.EquinoxLauncher.start(Equ
    xLauncher.java:241)
    at org.eclipse.osgi.launch.Equinox.start(Equinox.java:258)
    at org.netbeans.core.netigso.Netigso.start(Netigso.java:190)
    at org.netbeans.NetigsoHandle.startFramework(NetigsoHandle.java:198)
    at org.netbeans.ModuleManager.enable(ModuleManager.java:1189)
    at org.netbeans.ModuleManager.enable(ModuleManager.java:1011)
    at org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:34
    at org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:276)
    at org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:3

    at org.netbeans.core.startup.Main.getModuleSystem(Main.java:181)
    at org.netbeans.core.startup.Main.getModuleSystem(Main.java:150)
    at org.netbeans.core.startup.Main.start(Main.java:307)
    at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:1

    at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.NullPointerException
    at oracle.dmt.dataminer.runner.RunManager.(RunManager.java:71
    … 50 more

    I got the above error when starting the command line interface. Can anyone help?.

    Thanks, Kamal

    1. thatjeffsmith Post
      Author
  13. Hello, this is great. We are exploring a SQLDEVELOPER CLI use especially doing these tasks, however, we would like some help with syntax for the following:

    Migration: Database Migration Tasks
    Unit test: Unit Testing Batch Tasks
    Database Cart Batch Tasks
    Basic Batch DBA Tasks

    Thank you

    1. thatjeffsmith Post
      Author
  14. There seems to be no CLI in the Linux version. Is there a way to run it on that platform? I want to cron running some reports and email them to a set of users.

    1. thatjeffsmith Post
      Author
      1. Hi Jeff,
        I try that command (./sdcli reports) in my linux (Oracle linux in virtualbox) but it only launches sqldeveloper GUI……Can you help me with this issue?

  15. Are these “reports” only pre-canned reports? I’m looking for the ability to run things like dumps to excel, or even fire off a standard sql script. I know that most folks use sql plus for that, but I like the way sql developer creates nice spreadsheets verses a csv. Does “Demo for 4.0 Take Three” (from the example above) refer to a file with a report specification in it?

    1. thatjeffsmith Post
      Author

      Command Line Interface support is only for the pre-defined Reports, no support for ad hoc queries and the CSV or Excel formatters. You can do a dump to Excel (that sound wrong by the way) using the Cart and the CLI though. So, if you have a View or Table you’re exporting, that would work. If it’s a query, you could rig it up as a database view to get around the limitation. My report demo is using a defined report, yes.

  16. I’m interested in the command line reports capability, but… we do not store passwords in SQLD. We’d need a ways to pass the password as an argument to sdcli. Any likelihood of that in the future?

    1. thatjeffsmith Post
      Author
      1. Hi Jeff,

        We have a framework in place where the batch script retrieves the password from a administrative DB (OS authentication, only a small handful of users have access) and stores it as a variable that is then used as part of the connect string. It may not be perfect security, but… We’re still working on locking things down.

        Anyway, if we could pass username and password to sdcli, we could use some of these reports, which would be very nice.

  17. Hi Jeff,

    The Cart feature is intruiging.

    I would be really interested in an explanation of the envisaged use case for this and its features, and where its likely (envisaged) to sit in the existing toolset – considering we can use Data Modeler to create DDL for deployment.

    Im confused as to where it sits and what gap it fills within development.

    ie. what can we actually use the cart for.

    While im asking – is there any work on-going to introduce a CLI for data modeler?
    That would make continous integration a snip with its fancy synchronize feature.

    Thanks
    Dan

    1. thatjeffsmith Post
      Author

      The cart also does data, think ad hoc deployment scripts.

      “Hey Jeff, your beer table looks yummy. Can I have it?”

      OK, here you go. Drags and drops beer table to cart, adds where filter clause to not share my private stash, hits deploy, and whammo, there’s the ZIP file all ready for them to use as they see fit. Now imagine I want to send someone a dozen or more tables, and I don’t want to have to worry about dependencies, creation order, etc. The cart takes care of all of that.

      The modeler can now take advantage of our CLI, so now all we need is to build use cases. Can you say a bit more about how you’d envision using it?

      1. Thanks Jeff, I get it now about the cart.

        Ok, use cases for CLI for modeler. (and other useful things while I am thinkign about it).

        Use:
        Continous Integration and Build of Database from v1.0 to v1.1

        2 scenarios
        1. Sync all dev databases as soon as a model change is checked in.
        a) use a CI tool to monitor subversion
        b) When a change is detected and committed in the model, we could invoke the CLI to sync (or just produce DDL for sqlplus to run) against a database connection (or set of connections) – which then distributes that change to other devs immediately and invokes further toolchains (unit tests etc).

        2. Daily integration build of all committed changes
        a) Each day(night) we could restore v1.0 database (plus data),
        b) use CLI to produce diffs between model 1.0 and model 1.1
        c) run diffs
        d) use CLI to sync model 1.1 to integration database (exit criteria here would be no changes detected – therefore succesful deployment)

        3. Are we able to generate a report of the diffs between model and database connection?, and diffs between 2 models. That would sure be useful.

        4. CLI to create connections for use in other CLI operations would be good as well. Passwords change and build environments can “go and get the passwords”, but it still requires a human to edit the connection in sql developer.

        1. Hi Dan and Jeff,
          I’m really happy only listening the possibility to include a CLI in datamodeler,
          I have exactly all these needs in my projects and I think with this features will be impossible to fail trying to convince all the architects to use this tool for datamodeling Oracle databases.

          Whith these features implemented in datamodeler we can say that for Continous integration the differences between datamodel and code are smaller than ever, even ridiculous.

          Thanks in advance

          1. thatjeffsmith Post
            Author
          2. Hi Jeff,

            both scenarios from Dan are already applicable to my ideas

            1)compare and merge models or data dictionary option with script as a result file will be amazing,
            this will help us to generate the deployment’s builds, in our developments we split the relational model and the physical model generating a tag of each version not taking into account in which physical environment we want to deploy, we leave the build into a binary repository prepared to be installed from scratch (not delta script), but this version could be deployed in different physical environments, with this option we could use the continuous integration server to run the compares of the models and upgrade the environments to the related version of the model unattended,

            2) Generate the scripts to create all the model from a branch or directly from the trunk

            3)Compare models from different branches generating a report to make easier the documentation of the release notes by a non expert personal, we could compare the branches now but the differences in the XML files are not as clear as a report directly from the tool talking about tables or fields.

            I will try to think a little bit more in depth about what could be useful and I will post it ,

            anyway Jeff, thanks for your support and for your interest,
            I hope we can celebrate the new feature in SDDM early

            Regards

        2. I would be glad to see an option for “Export Relational Design to Reporting Schema” from CLI. We are using Oracle Designer’s Repository (for years) to get a lot of information into our custom tools and reports. All done automatically; before moving to Modeler we need to have replacement of that.

          1. thatjeffsmith Post
            Author
          2. Hi Jeff,

            I read all the comments and we are also interested in a “cli” utility for SQL Datamodeler, the post of Dan described the same needs as our needs.

            So the questions is : do you plan to add this feature in future release of Data Modeler ? If yes, is there already an estimate date for this ?

            Thanks !

            Thomas

  18. I think I could have distilled my rant into the following key themes: 1. Productivity: we feel that a lot of our regular tasks are made unnecessarily complex – when v4 is ready we’ll hope to see a difference. 2. Focus: until we see productivity improving, I’ll selfishly resent every minute you spend developing new features! I’ll use the OTN forum to raise specific problems, but will wait and see what v4 has to offer first.

    1. thatjeffsmith Post
      Author
  19. I know it’s important to keep developers motivated, but is there a risk that you’re losing focus on what the product is for? First and foremost it’s an IDE – and v3 is the least popular SQL IDE in my office by a long distance. I’ve not seen v4 yet, but v3 has enough bugs/annoyances to keep you busy for a long time. Your feature request list is very long – is there really a lot of people asking for a CLI? Sorry to be grumpy – just my two cents.

    1. thatjeffsmith Post
      Author

      I welcome your candor, and don’t take it as grumpy.

      When you say version 3 – exactly what version of 3 are you talking about? We closed out over 500 bugs from v3.2 to 3.2.20.09 and spent more than 3 months in dedicated bug ‘fix it’ mode. So believe me when I say we consider stability first and new features second.

      What would be the more popular IDEs in your office, and why?

      Are there a lot of people asking for a CLI? Yes. I’d say it’s one of the most requested features we get. Folks build things, and then they want to automate what they’ve built.

      1. We’re on the latest of v.3. I guess it’s a case of different users for different use cases. We’re IT developers and designers, and we have enterprise products for building and automating. All we want from SQL Dev is a nice environment to build and test in. As a free product, maybe you have a lot of customers who are students, or (god-help-us) business users who are looking for ways of playing with database features and extracting data/reports. They want multi-pupose – we want lean and productive…

        We previously used Toad and SQL Navigator but lost them due to cost-cutting. Other colleagues have fond memories of PLSQL Developer.

        p.s. I have no complaints about stability – it’s a lot more reliable than SQL Navigator in the long-run.

        1. thatjeffsmith Post
          Author

          Again, thanks for continuing the conversation Michael – if that is indeed your real name 🙂

          We have several million users, and a majority of them would classify themselves just as you have described. I guess I’m confused, how does enhancing an existing CLI prevent you from building and testing your applications?

          I’d argue we’re pretty lean. If you think we’re fat, you can always disable the extensions you don’t use. That will give you a simpler UI and a faster load-time for the tool. Of the 3 tools you mentioned, I’d say we have a pretty good argument for a case of being the leanest…so if you have no complaints around stability, what are your complaints again?

  20. thatjeffsmith Post
    Author
      1. thatjeffsmith Post
        Author
  21. Thanks for the description, Jeff! Is there a chance to create pdf using cli? what would be the option to use in command line call?

    Thanks,
    Andrey

  22. Odd I was thinking that Unit Testing might be the biggest use of the CLI for use in continuous integration environments.

    It’s probably a toss up between the two 🙂

    1. thatjeffsmith Post
      Author

Leave a Reply

Your email address will not be published. Required fields are marked *