sql: Each arg on command line will add a \n. Useful for Oracle

This commit is contained in:
Ole Tange 2010-09-14 23:25:53 +02:00
parent ceca2fea75
commit 28f9796b4e
4 changed files with 25 additions and 2 deletions

View file

@ -10,6 +10,9 @@ sql :pg_foo?'\dt %0a SELECT * FROM users'
cat ~/.sql/aliases | parallel --colsep '\s' sql {1} '"select 0.14159+3;" | grep -q 3.14159 || (echo dead: {1}; exit 1)' cat ~/.sql/aliases | parallel --colsep '\s' sql {1} '"select 0.14159+3;" | grep -q 3.14159 || (echo dead: {1}; exit 1)'
--list-tables
select OBJECT_NAME from user_objects where object_type = 'TABLE';
== FEX == == FEX ==
fex syntax for splitting fields fex syntax for splitting fields

View file

@ -406,7 +406,7 @@ my $queryfile = "";
if($dburl{'query'}) { if($dburl{'query'}) {
my $fh; my $fh;
($fh,$queryfile) = tempfile(SUFFIX => ".sql"); ($fh,$queryfile) = tempfile(SUFFIX => ".sql");
print $fh $dburl{'query'}; print $fh $dburl{'query'},"\n";
close $fh; close $fh;
$batch_command = "cat $queryfile - | $batch_command"; $batch_command = "cat $queryfile - | $batch_command";
} }
@ -415,7 +415,9 @@ do {
if(@ARGV) { if(@ARGV) {
$::opt_debug and print "$batch_command\n"; $::opt_debug and print "$batch_command\n";
open(M,"| $batch_command") || die("mysql/psql/sqlplus not in path"); open(M,"| $batch_command") || die("mysql/psql/sqlplus not in path");
print M "@ARGV"; for(@ARGV) {
print M "$_\n";
}
close M; close M;
} elsif (is_stdin_terminal()) { } elsif (is_stdin_terminal()) {
$::opt_debug and print "$interactive_command\n"; $::opt_debug and print "$interactive_command\n";

View file

@ -50,3 +50,7 @@ stdout sql ''
echo "### Test dburl :" echo "### Test dburl :"
stdout sql ':' stdout sql ':'
echo "### Test oracle with multiple arguments on the command line"
echo ":oraunittest oracle://hr:hr@/xe" >> ~/.sql/aliases
perl -i -ne '$seen{$_}++ || print' ~/.sql/aliases
sql :oraunittest "WHENEVER SQLERROR EXIT FAILURE" "SELECT 'arg2' FROM DUAL;" "SELECT 'arg3' FROM DUAL;"

View file

@ -19,16 +19,19 @@ It works
### Test alias followed by SQL as arg ### Test alias followed by SQL as arg
Test statement in alias Test statement in alias
It works It works
'Arg on cmdline'
Arg on cmdline Arg on cmdline
### Test alias with query followed by SQL as arg ### Test alias with query followed by SQL as arg
Test statement in alias Test statement in alias
It works It works
Query added to alias Query added to alias
'Arg on cmdline'
Arg on cmdline Arg on cmdline
### Test alias with statement .sql/aliases ### Test alias with statement .sql/aliases
Test statement in alias Test statement in alias
It works It works
Query added to alias Query added to alias
'Query from stdin'
Query from stdin Query from stdin
Test statement in alias Test statement in alias
It works It works
@ -46,3 +49,14 @@ Error:
: is not defined in /home/tange/.sql/aliases /home/tange/.dburl.aliases /etc/sql/aliases /usr/local/bin/dburl.aliases /usr/local/bin/dburl.aliases.dist : is not defined in /home/tange/.sql/aliases /home/tange/.dburl.aliases /etc/sql/aliases /usr/local/bin/dburl.aliases /usr/local/bin/dburl.aliases.dist
sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command] sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
### Test oracle with multiple arguments on the command line
'ARG2'
------------
arg2
'ARG3'
------------
arg3