QUICK DESCRIPTION Bulk copies data into a Sybase table. Data sources can include a) another Sybase table, b) the results of any Transact-Sql, c) the return values from a perl subroutine called repetitively, or d) a flat file. An attempt is made to make error reporting/handling/intercepting more accessible. One option worth noting here is -auto_delete. It instructs the module to only delete the rows you're about to insert. Also comes with a command line wrapper, sybxfer. INSTALLATION (the usual) perl Makefile.PL [ LIB= ] make make test make install DEPENDENCIES Requires Perl Version 5.005 or beyond Requires packages: Sybase::DBlib SYNOPSIS #from perl #!/usr/bin/perl5.005 use Sybase::Xfer; $h = new Sybase::Xfer( %options ); $h->xfer(); $h->done(); #from shell #!/usr/ksh sybxfer CONTACTS my e-mail: stephen.sprague@msdw.com CHANGE LOG: ------------------------ Version .40 01-mar-2001 ------------------------ * new defaults -U and -P default to $ENV{USER}, -S defaults to $ENV{DSQUERY} * more concise usage -help will invoke a short help, '-help more' will invoke a slightly more expanded help * list return context for method xfer if method xfer called in list context it will return (num_rows_read, num_rows_transferred, last_error_detected) # new switch -from_file_map (-ffm) allows re-arranging of fields in -from_file to columns in -to_table * float/int syntax error focus the smart error reporting expanded to include float and int checks when sybase just indicates a "syntax error". * the module no longer exits anywhere Where it exited before it now returns with a unsuccessful return code. * tweaked the output of -progress_log a little. ------------------------ Version .31 12-feb-2001 ------------------------ * Fixed sloppy bug left in v.30 where if @ARGV is empty it'd print a usage statment. Duh! That holds for the script sybxfer but it doesn't hold user written scripts. ------------------------ Version .30 11-feb-2001 ------------------------ Some promised mods. * New/modified switches as follows: -error_handling 'continue|abort|retry' added value 'retry'. Will behave like Sybase::BCP upon error on bcp_batch. In other words, set the batchsize to 1 and resend the data. Prints failed records to -error_data_file. (thanks to Michael Peppler for allowing me to raid his code.) -retry_max 'n' number of times to retry a failed bcp_batch. Default is three. -retry_deadlock_sleep 'sec' number of seconds to sleep between sending the bcp_batch again iff a deadlock error is detected. Default is 120. -callback_err_batch 'coderef' implemented it. Now users can modify the rows in the batch and request that xfer resend it or not. Default is Xfer's own routine that implements the most useful behaviour (hopefully.) -error_data_file | -edf contains records that failed to transfer in addition to source record number and Sybase erorr message for each record that failed. -from_file | -ff new source. Take the data from a flat file. Must be a delimited file. Steals a chapter from Sybase's bcp. -from_file_delimiter | -ffd used inconjunction with with -from_file. The delimeter can be regular expression. (similiar to -t switch in Sybase's bcp) -holdlock if switch -from_table specified then this switch appends a 'holdlock' to internally generated select statement. -app_name sets the program_name in master..sysprocesses table. Defaults to the script name. -delete_flag modified such that rows are deleted in -batchsize increments so the log doesn't get blown. * changed the final summary message slightly to report: 1) num rows read from source 2) num rows resent to target table (only if errors) 3) num rows failed to be transferred * if no args given it'll exit gracefully with a message to run perldoc