freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
- From: David Nichols <nicholsman AT gmail.com>
- To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
- Subject: Re: [freetds] testing using tsql
- Date: Thu, 21 Jun 2007 07:54:39 +0200
hi,
I am trying to find a way to test an MS SQL engine using tsql(1) from a
Linux box.
My input file has over 47000 SQL statements in it.
So I rolled up a perl script to say...
my $input = IO::File->new ( "inputfile.sql");
my $output = IO::File->new( "| tsql -H host -P port -U xx -P xxx");
$output->autoflush(1);
do
{
$more = $sql = getSql ( $in );
sendSql ($out, $sql);
# recvResponse(....);
sleep(2); # watch some TV, etc
} while ( $more );
My problem is with my writes to the pipe above. And tsql prompts and
bunch of error messages...I might have to insert a function called
recvResponse() after sendSQL()....and that is where I said, I bet
someone has already done this....
has anyone cooked up a utilitiy like this....I need to be able to insert
sleep between sql requests....that is why I can 'nt use tsql itself
Or maybe there is a way ...
If you don't absolutely have to use tsql, then if I could suggest trying qore to do it; the latest release has a FreeTDS-based driver (called "mssql").
Qore features tighter database integration than perl, and, although of course it's a much newer language so it doesn't have the amazing breadth and depth of perl's libraries and modules, the sort of thing you are trying to do is a lot easier in qore than perl (IMHO - note: I am the author of qore, so I'm obviously biased).
The code would look like the following in qore:
# load the FreeTDS driver
%requires mssql
# set connection parameters using the mssql driver
# note there must be an entry for this dataserver in the freetds.conf file to set the hostname, port and the TDS protocol version
my $db = new Datasource("mssql", "user", "password", "connection_name"):
my $input = new File();
$input.open("inputfile.sql");
# the following assumes that each line is an SQL statement terminated by a newline
while (exists (my $line = trim($input.readLine())))
{
$db.exec($line);
sleep(2);
}
If you need any help with qore, drop me a line. Qore info can be found here: http://qoretechnologies.com/qore
Otherwise I can't help much with perl - although I might suggest trying calling tsql with system() or something like that for each SQL command instead of using a pipe; maybe it will be easier to debug?
thanks,
David
-
[freetds] testing using tsql,
Medi Montaseri, 06/20/2007
- Re: [freetds] testing using tsql, David Nichols, 06/21/2007
-
Re: [freetds] testing using tsql,
Chris Thomas, 06/21/2007
-
Re: [freetds] testing using tsql,
Medi Montaseri, 06/21/2007
-
Re: [freetds] testing using tsql,
Duncan Berriman, 06/21/2007
- Re: [freetds] testing using tsql, Medi Montaseri, 06/21/2007
- Re: [freetds] testing using tsql, James K. Lowden, 06/21/2007
-
Re: [freetds] testing using tsql,
Duncan Berriman, 06/21/2007
-
Re: [freetds] testing using tsql,
Medi Montaseri, 06/21/2007
- Re: [freetds] testing using tsql, ZIGLIO, Frediano, VF-IT, 06/22/2007
Archive powered by MHonArc 2.6.24.