Configuration
The default configuration should work fine with most databases.  However, it 
may be necessary to change some settings to optimize the performance of the 
copy operation.  Below is a screenshot of the Global Preferences dialog that
is used to configure the DBCopy plugin.  To access this dialog, choose 
File -> Global Preferences. Depending upon which plugins you have installed,
you may have more or less tabs than shown in the screenshot below.		
 
 
The following is a description of what each configuration item does: 
    -  Transfer Options 
    
 
        -  Use truncate command instead of delete where possible - if checked, and records exist
             in the destination table, an attempt will be made to issue a "truncate" command instead of
	     "delete".  This may only be of use when the destination database is Oracle and there are a 
	     large number of records to be removed from existing tables in the database. The truncate
	     command avoids the use of rollback segments in Oracle and runs substantially faster.  Delete
             will be used if truncate command fails, so it is safe to leave this checked.
	
-  Copy the records from source to destination table - If checked, records from the source
	        database table will be copied to the destination database.  If unchecked, records will be 
		skipped, but tables will be created.  This is useful for testing the validity of the table
		definitions created by DBCopy without waiting for all the records to be copied.
             
             
-  ResultSet fetch size - the number of records to be fetched in one trip to the 
                  database for selects.  A small number should conserve memory and reduce performance.  A
                  large number should increase performance and memory consumption.
        
-  Copy foreign key definitions - if checked, foreign keys for tables being copied 
                will be created in the destination database.  It is important that the set of tables 
                being copied do not make reference by foreign key to tables that aren't being copied
                and don't exist in the destination database.
        
	    -  Ignore index defs for columns already indexed - some databases don't allow 
                 multiple indexes to be created using the same column.  If this is enabled, 
                 an index will be skipped if it uses a column that is covered by another index
	
-  Use a file buffer instead of memory for copying BLOBs - 
	    
            
-  Copy buffer size - This option is only available when not using a file buffer to 
	            copy BLOBs. This is the number of bytes to read from the database stream and 
		    write to the temporary file at one time.
	
-  Auto-Commit - If checked every SQL statement is committed in it's own transaction. 
	
            -  Commit after creating table - This option is available when Auto-Commit is unchecked.  If checked
	         a commit will be performed after each table is created, prior to inserting any records.
		 Some databases (like Firebird) don't allow record insertion to occur in the same transaction that 
		 the table the records are inserted into is being created.
	    
-  Commit count - This option is available when Auto-Commit is unchecked.
	         How many records to insert before committing the transaction.
	
-  Delay time in between copying database objects(ms) - When enabled, this option allows the user
                to insert a time delay into the copy operation at two different points.  The delay is taken to be 
                in milliseconds and the points are 1) in between copying tables 2) in between copying records.  A
                delay of 0 or less is effectively the same as disabling delay time for the insertion point.  This 
                option can be used to conserve CPU and I/O on the client which is running SQuirreL, and the database
                server(s).
        
        
	-  Tables - delay is inserted between tables.  
	
-  Records - delay is inserted between tables.  Care should be taken as this will have a greater impact 
                       for many records.
	
	
-  Write script file containing SQL statements executed - a script file approximating the 
	     SQL statements issued during the copy operation will be created if this is checked.  Only
	     statements that actually create database objects or insert records will be added to the file.
	     The file can be located in the <user.home>/.squirrel-sql/plugins/dbcopy/scripts directory.
	     The file will be called <source_db_user>_to_<dest_db_user>.sql.  Binary columns are
	     problematic as there isn't a portable way to insert BLOBs into a database from a script.
    
-  Column Type Mapping 
    
        -  Always prompt to choose the Hibernate Dialect for the destination database - If checked, DBCopy plugin
	        will not attempt to detect the dialect to use for the destination database.  The user will be prompted to
		choose the dialect.
	
-  Check column names in copied tables for keywords in destination database - If checked, the list of keywords
	        from the JDBC driver for the destination database will be consulted to ensure that column names of the source
		tables to be copied are legal column names in the destination database.  All tables in the copy set will be 
		checked before any changes are made to the destination database.  The copy operation will be halted if a keyword
		is detected.  This checking is too aggressive for some databases that report valid column names as keywords (e.g. DB2) 
		
	
-  Test column names in copied tables to see if they are valid for the destination database - If checked, this 
	        will cause a test table to be created in the destination database for every column of every table in the copy set
		of the source database.  This will slow the copy operation quite a bit, but can be useful for determining why a 
		copy operation is failing - sometimes the database error gives no hint that an invalid column name appeared in 
		the create table statement.