Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^4: dbd odbc sql big file blues

by CaptainDaddy (Initiate)
on Mar 20, 2013 at 18:51 UTC ( #1024593=note: print w/ replies, xml ) Need Help??


in reply to Re^3: dbd odbc sql big file blues
in thread dbd odbc sql big file blues

The below code works as desired, as you will notice I switched to DBD:Sybase,

> perl sybase_trial.pl<br> the file table is there!!!<br> did succeed. size: 75<br> did succeed. size: 150<br> did succeed. size: 300<br> did succeed. size: 600<br> did succeed. size: 1200<br> did succeed. size: 2400<br> did succeed. size: 4800<br> did succeed. size: 9600<br> did succeed. size: 19200<br> did succeed. size: 38400<br> did succeed. size: 76800<br> did succeed. size: 153600<br> did succeed. size: 307200<br> did succeed. size: 614400<br> did succeed. size: 1228800<br> did succeed. size: 2457600<br> did succeed. size: 4915200<br> did succeed. size: 9830400<br> did succeed. size: 19660800<br> did succeed. size: 39321600<br> did succeed. size: 78643200<br>

> cat sybase_trial.pl
#connect to the database, set some properties
#
$user = "...";
$pass = "...";
$dsn="dbi:Sybase:server=...;database=dbname";
$force= DBI->connect("$dsn",$user,$pass) or die "can't
connect";


$fileTableName="fileTable";
$cmd="SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='$fileTableName\'";
$fetchcmd= $dbh->prepare($cmd);
$fetchcmd->execute();
if(@row= $fetchcmd->fetchrow_array){
print "the file table is there!!!\n";
}else {
$createCmd=$dbh->prepare("create table $fileTableName (fileColumn VARBINARY(MAX) not null)");
$createCmd->execute() or die "can't create table";
$insertCmd=$dbh->prepare("insert into $configTableName (fileColumn) values (?)");
$insertCmd->bind_param(1,0,DBI::SQL_VARBINARY);
$insertCmd->execute();
}
$fetchcmd->finish();


$insertcmd= $dbh-> prepare("insert into $fileTableName (fileColumn) values (CONVERT(varbinary(max),?))");

# 350kBites -> largest number is 2^(8*350000)-1
for($i = 75; $i<2**280000;$i=$i*2){
print"did";
$insert='g'x$i;
$insertcmd->bind_param(1,$insert,DBI::SQL_VARBINARY);
$insertcmd->execute() or print" not ";
$insertcmd->finish();
$sz=length($insert);
print " succeed. size: $sz\n";
}



Comment on Re^4: dbd odbc sql big file blues
Download Code
Re^5: dbd odbc sql big file blues
by mje (Deacon) on Mar 21, 2013 at 09:45 UTC

    Glad your working now. You've totally changed your stack now as you are now using a different Perl module and you're not using the freeTDS ODBC driver any more. I tried the freeTDS ODBC driver and got the same problem you did.

      One strange thing: I'm using the servername in my DSN that I defined in freetds.conf. So am I or aren't I using freeTDS with dbd::Sybase?
      Thanks.

        I've never used DBD::Sybase but I believe all you need is a CT lib which both the Sybase Open Client and freeTDS can provide. Which libraray you are using depends on how DBD::Sybase was built and what you have on your machine.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1024593]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2014-10-01 18:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (32 votes), past polls