Re: Need a GNU SQL CLI tool for Win32 with ODBC support.

Поиск
Список
Период
Сортировка
От William Penberthy
Тема Re: Need a GNU SQL CLI tool for Win32 with ODBC support.
Дата
Msg-id !&!AAAAAAAAAAAYAAAAAAAAAAGZJtg+Hf1OimjKwiCyfgjCgAAAEAAAAFZHEDg+M5NDlZNdaxHOggQBAAAAAA==@scarpatechnology.com
обсуждение исходный текст
Ответ на Re: Need a GNU SQL CLI tool for Win32 with ODBC support.  (SCassidy@overlandstorage.com)
Список pgsql-general
You should also be able to Windows Scripting Host for this.

It has complete ODBC connection support, generally comes installed on all
versions of windows, and Microsoft has buckets of example scripts available
on their site.

-----Original Message-----
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] On Behalf Of
SCassidy@overlandstorage.com
Sent: Thursday, March 02, 2006 12:14 PM
To: roy@silicontao.com
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] Need a GNU SQL CLI tool for Win32 with ODBC support.

Since you mentioned Java, I thought I'd mention this.  There is no reason
you cannot write a command line tool using Java.  I'm no Java guru, but I
quickly wrote a simple Java program to connect to PostgreSQL (on a Linux
box) from a Windows box.  I used a nice command line parser library called
JSAP to allow me to specify fancy command line parameters for queries.  You
can then easily script the use of your Java program.

Sample output (remember this is quick and dirty, you can fancy it up all
you want):

C:\JavaPgms\database>java -classpath
.;\workarea\pg74.215.jdbc3.jar;\JavaPgms\JSAP-2.0a.jar  test_db_cli -c 2 -q
"select id, testdata from test2"
Row: 1: 1       abcde
Row: 2: 2       fghijkl
Row: 3: 3       mnopqrs
Row: 4: 4       the quick brown
Row: 5: 5       fox jumped over the
Row: 6: 7       lazy dog.

C:\JavaPgms\database>java -classpath
.;\workarea\pg74.215.jdbc3.jar;\JavaPgms\JSAP-2.0a.jar  test_db_cli -c 2 -q
"select id, testdata from test2" -v
Number of cols specified: 2, query: select id, testdata from test2
Row: 1: 1       abcde
Row: 2: 2       fghijkl
Row: 3: 3       mnopqrs
Row: 4: 4       the quick brown
Row: 5: 5       fox jumped over the
Row: 6: 7       lazy dog.

C:\JavaPgms\database>java -classpath
.;\workarea\pg74.215.jdbc3.jar;\JavaPgms\JSAP-2.0a.jar  test_db_cli --cols
2 --query "select id, testdata from test2" -v
Number of cols specified: 2, query: select id, testdata from test2
Row: 1: 1       abcde
Row: 2: 2       fghijkl
Row: 3: 3       mnopqrs
Row: 4: 4       the quick brown
Row: 5: 5       fox jumped over the
Row: 6: 7       lazy dog.


C:\JavaPgms\database>java -classpath
.;\workarea\pg74.215.jdbc3.jar;\JavaPgms\JSAP-2.0a.jar test_db_cli

Usage: java test_db_cli
                (-c|--cols) <cols> (-q|--query) <query> [-v|--verbose]

Of course, you could add parameters for database name, etc.

My sample program is 95 lines (including comments, etc.).   It may not be
great Java, so don't laugh:


Installing the PostgreSQL .jar driver is as simple as downloading it.

/*  Java sample jdbc program test_db_cli.java
*/

import java.io.*;
import java.sql.*;
import com.martiansoftware.jsap.*;

public class test_db_cli
{
    Connection  conn;                                   // holds database
connection
    Statement   stmt;                                     // holds SQL
statement

    public test_db_cli(int returnVals, String queryStr) throws
ClassNotFoundException, FileNotFoundException, IOException, SQLException
    {
        int i = 0;
        int c = 0;
        Class.forName("org.postgresql.Driver");         // load database
interface
         // connect to the database - ip address, user, etc. have been
munged - just insert your real values:
        conn =
DriverManager.getConnection("jdbc:postgresql://10.20.xx.xx/testdb1",
"yourdbuser", "yourpwifnecessary");
        stmt = conn.createStatement();

        ResultSet res = stmt.executeQuery(queryStr);

        if (res != null)
            while(res.next())
            {
                i++;
                System.out.print("Row: " + i + ":\t");             //output
the data any way you want
                for (c=1;c<=returnVals;c++) {
                  String item1 = res.getString(c);
                  System.out.print(res.getString(c) + "\t");
                }
                System.out.println("");
            }

        res.close();
        stmt.close();
        conn.close();
    }

    public static void main(String args[]) throws Exception {
        JSAP jsap = new JSAP();
        int numcols;
        String query;

        FlaggedOption opt1 = new FlaggedOption("cols")
                                .setStringParser(JSAP.INTEGER_PARSER)
                                .setDefault("1")
                                .setRequired(true)
                                .setShortFlag('c')
                                .setLongFlag("cols");
        jsap.registerParameter(opt1);
        FlaggedOption opt2 = new FlaggedOption("query")
                                .setStringParser(JSAP.STRING_PARSER)
                                .setRequired(true)
                                .setShortFlag('q')
                                .setLongFlag("query");

        jsap.registerParameter(opt2);

        Switch verbose = new Switch("verbose")
                                .setShortFlag('v')
                                .setLongFlag("verbose");
        jsap.registerParameter(verbose);

        JSAPResult config = jsap.parse(args);

       // check whether the command line was valid, and if it wasn't,
        // display usage information and exit.
        if (!config.success()) {
            System.err.println();
            System.err.println("Usage: java "
                                + test_db_cli.class.getName());
            System.err.println("                "
                                + jsap.getUsage());
            System.err.println();
            System.exit(1);
        }

        numcols=config.getInt("cols");
        query=config.getString("query");

        if (config.getBoolean("verbose")) {
          System.out.println("Number of cols specified: " + numcols + ",
query: " + query);
        }
        try {
          test_db_cli test = new test_db_cli(numcols, query);
        } catch(Exception exc)  {
          System.err.println("Exception caught.\n" + exc);
          exc.printStackTrace();
        }
    }
}

Just an idea.

Susan





                           Roy Souther

                      <roy@silicontao.com>           To:
pgsql-general@postgresql.org
                           Sent by:                  cc:

                                                     Subject:  [GENERAL]
Need a GNU SQL CLI tool for Win32 with ODBC support.


                      pgsql-general-owner@pos         |-------------------|

                      tgresql.org                     | [ ] Expand Groups |

                                                      |-------------------|



                           03/01/2006 03:00

                      PM

                           Please respond to

                      roy









I love Linux, any tool you need it has it. Just try to find the most basic
of tools for Windows, what a joke.

I need an Open Source SQL command line tool for Windows that will let me
script queries to a database over an ODBC connection. It must use ODBC
because it may or may not be PostgreSQL. Some times it will but the rest of
the time I have no idea what is on the other end.

Most crap I am finding is shareware and everything is GUI. Some stuff is
Open Source but requires Java, not good but still not CLI.

Has anyone seen such a tool?




 Royce Souther
 www.SiliconTao.com
 Let Open Source help your business move beyond.

 For security this message is digitally authenticated by GnuPG.






(See attached file: signature.asc)


----------------------------------------------------------------------------
------------------
Simply protected storage solutions ensure that your information is
automatically safe, readily available and always there, visit us at
http://www.overlandstorage.com
----------------------------------------------------------------------------
------------------




В списке pgsql-general по дате отправления:

Предыдущее
От: Grant McLean
Дата:
Сообщение: Re: Need a GNU SQL CLI tool for Win32 with ODBC support.
Следующее
От: Andrew Watkins
Дата:
Сообщение: Linux cluster application