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?

Reports Usage:
reports <command> <command arguments>

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

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

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!

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.

Author

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.

99 Comments

  1. 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.

    • 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.

    • Jenkins is running under user SYSTEM whereas command line is under my name. How to fix this?

    • 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.

    • Hi Mangesh.
      I wanna know how did you fix this issue? I met the same issue too. And it still blocking.

  2. Is this resolved?
    I am facing the same problem. Please let me know if there is a way to fix this.

  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. ๐Ÿ™‚

    • if you want QUERY results to XML, you’ll need to use SQLcl.

      SDcli would be ideal if you had 50 tables you wanted to dump out to say SQL*Loader scripts and a zip file to deploy them via a CLI.

    • 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:SYSTEM/myPW@MyDBaddress: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.

    • 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???

    • Getting the same error on 4.2. Any solution to this?

    • Same for me: works in 4.1.5.21, but doesn’t in 17.2.0.088.
      Getting
      java.lang.IllegalArgumentException: null connection not allowed
      at oracle.dbtools.db.DefaultConnectionIdentifier.(DefaultConnectionIdentifier.java:29)

  5. Walter Klauer Reply

    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

    • Walter Klauer

      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,

  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 ..

  8. is there a way to NOT create the folder with the jpg, css and gif file?
    I want only a single file with the report.
    Thanks.

    • Yes, generate the code/report yourself.

      You can also try the the hints and execute via worksheet, e.g. select /*html*/ * from hr.employees;

  9. 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 .

  10. 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”
    }

  11. Ravi Shankar Reply

    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.

  12. 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.

    • Demo for 4.0 Take Three – that’s the name of my report. The error message says it can’t be found. You need to run the report using the name of your report.

    • 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?

    • does the report name have spaces, did you quote it?

      can you get it working outside of Jenkins?

    • 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.

    • 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.

    • so start up sqldev GUI as the jenkins user, do you see the report you’re trying to run in the user defined reports? if not, that’s the issue

    • I just tried that and I think you’re right.

    • RuixiaZhang

      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?

    • the report name would be what you see in your user defined reports tree, do you have one there listed as ‘abd’ ?

  13. 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

    • Yes, but this isn’t the best place to do that. I would advise:

      1. If you have Support, open a Service Request with My Oracle Support
      2. If you don’t have support, you can try posting this on the OTN forums
  14. 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

    • Help is built into the cli, just run sdcli dba, and you get back supported commands with the required parameters and an example

  15. 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.

    • Marcelo Carrasco

      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?

  16. 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?

    • 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.

  17. 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?

    • How would you like to do that and keep the password secure, and not exposed in a shell script?

    • 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.

  18. 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

    • 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?

    • 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.

    • 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

    • 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

    • Libor Stefek

      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.

    • Thomas M

      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

  19. 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.

    • Great. So can you relate on a few workflows you see as overly complex? I hate extra clicks and complexity for the sake of such.

  20. 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.

    • 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.

    • 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.

    • 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?

  21. Andrey Goryunov Reply

    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. David Grimberg Reply

    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 ๐Ÿ™‚

    • Well, we already had a way to run unit tests for CI, but 1)way more people use reports over unit tests and 2)see #1 ๐Ÿ™‚

Reply To Andrey Goryunov Cancel Reply