Release Notes 1.3
New Features
ADBC Netezza — --connectiontype adbc_netezza
FastBCP now supports Netezza / IBM NPS through the embedded ArpeNetezza ADBC driver, via the new --connectiontype adbc_netezza connection type. The driver is used for both the metadata step and the data step.
Key highlights:
- No NZdotNET installation needed
- Works with IBM Cloud NPS
- Parquet output only, like the other
adbc_*connection types - Supported parallel methods:
None,NZDataSlice,Ntile,Random,RangeIdandDataDriven Application Namedefaults toFastBCP- NPS 7.x: TLS 1.0/1.1 supported (
tls_min_version=1.0, ArpeNetezza 0.3.2)
Connection string keys: --sourceconnectstring keys no longer need the adbc.arpenz. prefix. The following are all accepted:
- Friendly / ADO.NET keys:
Server,Host,host:port,Port,Database,User ID,Password,SSL Mode,Application Name, … - Plain driver keys:
sslmode,tls_min_version,char_encoding,login_timeout, … uriandconnection_string
Keys the driver does not support (e.g. propagate, Pooling) are ignored, with a single warning.
- Windows
- Linux
.\FastBCP.exe `
--connectiontype adbc_netezza `
--sourceconnectstring "Server=nps-host;Port=5480;Database=SALES;User ID=admin;Password=FastPassword" `
--sourceschema "ADMIN" `
--sourcetable "ORDERS" `
--directory "D:\export\orders" `
--fileoutput "orders.parquet" `
--parallelmethod NZDataSlice `
--paralleldegree 8
./FastBCP \
--connectiontype adbc_netezza \
--sourceconnectstring "Server=nps-host;Port=5480;Database=SALES;User ID=admin;Password=FastPassword" \
--sourceschema "ADMIN" \
--sourcetable "ORDERS" \
--directory "/data/export/orders" \
--fileoutput "orders.parquet" \
--parallelmethod NZDataSlice \
--paralleldegree 8
Files exported from NPS 7 with the pre-releases v1.3.0-netezza.1 / v1.3.0-netezza.2 may contain wrong values in NUMERIC columns. This is fixed in ArpeNetezza 0.3.3, shipped with FastBCP 1.3. Re-export the affected tables.
See Connection Parameters for more details.
New Parallel Method — DBPartition
The new --parallelmethod DBPartition parallel method runs one extraction per native partition / subpartition of the source table.
Supported sources:
| Source | Partitioning used |
|---|---|
| SQL Server | $PARTITION |
| PostgreSQL | Leaf tables |
| Oracle | PARTITION (...) |
| MySQL | PARTITION (...) |
| Teradata | Row partitioning, single- and multi-level PPI |
The adbc_* counterparts are supported too.
- Requires
--sourceschemaand--sourcetable. - Falls back to
None, with a warning, when the table is not partitioned, has a single partition, or the source is not supported. - Optimised partition scheduling (internal improvement).
FASTBCP_DOP_EQUERYalso applies toDBPartition.
The output layout is controlled by the new FASTBCP_DBPARTITION_TARGET_MODE environment variable:
| Value | Output layout |
|---|---|
CHUNK (default) | <file>_chunk_NNN.<ext> |
HIVE | partition=<p>/[subpartition=<sp>/]<file>.<ext> (SQL Server uses bounds=<lower>_<upper>, Teradata L1=<n>/L2=<n>) |
--merge works in both modes. See Parallel Parameters for more details.
Azure Blob Storage — Authentication and Container Access
For direct commit to Azure Blob Storage:
- Authentication: besides
DefaultAzureCredential(still the fallback), FastBCP now acceptsAZURE_STORAGE_CONNECTION_STRINGorAZURE_STORAGE_SAS_URL. The selected authentication method is logged. - Container access: a missing create permission on the container (HTTP 403/409) is tolerated when the container already exists. 403 errors now give a clearer message (firewall, RBAC or SAS permissions).
See Azure Configuration for more details.
ADBC Connectors Improvements
--applicationintentwith--connectiontype adbc_mssql:--applicationintent(defaultReadOnly) and anApplicationIntentkey in--sourceconnectstringnow reach the ArpeMSSQL driver. An Availability Group listener with read-only routing sends the export to a readable secondary, as with--connectiontype mssql.--connectiontype adbc_pgsqlhonours the libpq environment:PGUSER,PGPASSWORD,PGPASSFILE/~/.pgpassandPGSSLROOTCERTare used when--user/--password/--sourceconnectstringdo not provide them, like--connectiontype pgsql(ArpePGSQL 0.4.5).--connectiontype adbc_oracleresolves TNS aliases throughtnsnames.ora(TNS_ADMIN,$ORACLE_HOME/network/admin), like--connectiontype oraodp(ArpeOracle 0.3.11).
Behaviour Changes
adbc_mssql / adbc_pgsql / adbc_oracle Run Fully on ADBC
The metadata and planning step (row counts, column types, Ntile, Random, Timepartition, DBPartition, …) now runs on the ADBC driver instead of SqlClient, Npgsql or ODP.NET. A single connection string is used for both steps.
--sourceconnectstringaccepts the native syntax, explicitadbc.*/arpeio.*keys (they win over translated keys), or a whole-connectionuri/adbc.<driver>.connection_string.- Native keys with no driver equivalent (e.g.
Pooling=false) are dropped with a warning. With a whole-connectionuri/connection_string, native keys are dropped with a warning saying to put them inside the URI / connection string. - A
Driver=path in--sourceconnectstringis used by both steps.
Oracle Network Encryption with --connectiontype adbc_oracle
FastBCP now sends encryption=accepted and data_integrity=accepted, so the server decides, as with --connectiontype oraodp. FASTBCP_ADBC_ENCRYPTION / FASTBCP_ADBC_DATA_INTEGRITY or explicit keys still override this.
--connectiontype adbc_pgsql NUMERIC NaN
A NaN in a decimal column now fails the read instead of becoming NULL. Set adbc.arpepgsql.numeric_special=null in --sourceconnectstring to keep the previous behaviour (ArpePGSQL 0.4.2+).
adbc_oracle DataDriven Keys
A scale-0 NUMBER(<=18) key is now treated as an integer, as with --connectiontype oraodp, so predicates and Hive paths are identical between both connection types.
NZDataSlice Scheduling
Faster on uneven slices (internal improvement). After the first failure, no new slice starts. Output files are unchanged.
Bug Fixes
- Ntile lost rows (pre-existing): rows could be missing from the export in some cases; on Oracle, string keys failed. Fixed (internal improvement).
- Passwords in logs: quoted passwords containing
;(e.g.Password="p;w=1") are now fully masked in logs and telemetry, for every connection type. --connectiontype adbc_mssqlwith a named instance:host\INSTANCEconnected to the instance on port 1433 instead of resolving the named instance through the SQL Server Browser.- Oracle TNS alias with
--user/--password:--connectiontype oraodp --server ALIAS --user u --password pfailed withORA-50008: 'USERNAME' is an invalid connection string attribute(same foradbc_oracle). --connectiontype nzoledbconnection type fixed (internal improvement).--connectiontype nzcopy --parallelmethod Timepartitiongenerated invalid SQL for Netezza. Fixed (internal improvement).NZDataSlicewith--timestamped: all chunks of one export now share the same timestamp prefix (long exports were split across several prefixes).NZDataSlicelog message fix.
Documentation
- AWS S3: IAM roles / policies needed by FastBCP and SSE-KMS support.
- FASTBCP_DBPARTITION_TARGET_MODE: new environment variable.
- Connection Parameters:
adbc_netezzaconnection type.