Skip to main content
Version: 1.3 (Latest)

Release Notes 1.3

New Features​

ADBC Netezza — -C adbc_netezza​

FastBCP now supports Netezza / IBM NPS through the embedded ArpeNetezza ADBC driver, via the new -C 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, RangeId and DataDriven
  • Application Name defaults to FastBCP
  • 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, …
  • uri and connection_string

Keys the driver does not support (e.g. propagate, Pooling) are ignored, with a single warning.

.\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
NPS 7 pre-releases

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 -m DBPartition parallel method runs one extraction per native partition / subpartition of the source table.

Supported sources:

SourcePartitioning used
SQL Server$PARTITION
PostgreSQLLeaf tables
OraclePARTITION (...)
MySQLPARTITION (...)
TeradataRow partitioning, single- and multi-level PPI

The adbc_* counterparts are supported too.

  • Requires --sourceschema and --sourcetable.
  • Falls back to None, with a warning, when the table is not partitioned, has a single partition, or the source is not supported.
  • The largest partitions are scheduled first (based on catalog row estimates).
  • FASTBCP_DOP_EQUERY also applies to DBPartition.

The output layout is controlled by the new FASTBCP_DBPARTITION_TARGET_MODE environment variable:

ValueOutput layout
CHUNK (default)<file>_chunk_NNN.<ext>
HIVEpartition=<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 accepts AZURE_STORAGE_CONNECTION_STRING or AZURE_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​

  • --applicationintent with -C adbc_mssql: --applicationintent (default ReadOnly) and an ApplicationIntent key in --sourceconnectstring now reach the ArpeMSSQL driver. An Availability Group listener with read-only routing sends the export to a readable secondary, as with -C mssql.
  • -C adbc_pgsql honours the libpq environment: PGUSER, PGPASSWORD, PGPASSFILE / ~/.pgpass and PGSSLROOTCERT are used when -U / -X / -g do not provide them, like -C pgsql (ArpePGSQL 0.4.5).
  • -C adbc_oracle resolves TNS aliases through tnsnames.ora (TNS_ADMIN, $ORACLE_HOME/network/admin), like -C 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.

  • --sourceconnectstring accepts the native syntax, explicit adbc.* / arpeio.* keys (they win over translated keys), or a whole-connection uri / adbc.<driver>.connection_string.
  • Native keys with no driver equivalent (e.g. Pooling=false) are dropped with a warning. With a whole-connection uri / connection_string, native keys are dropped with a warning saying to put them inside the URI / connection string.
  • A Driver= path in --sourceconnectstring is used by both steps.

Oracle Network Encryption with -C adbc_oracle​

FastBCP now sends encryption=accepted and data_integrity=accepted, so the server decides, as with -C oraodp. FASTBCP_ADBC_ENCRYPTION / FASTBCP_ADBC_DATA_INTEGRITY or explicit keys still override this.

-C 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 -g 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 -C oraodp, so predicates and Hive paths are identical between both connection types.

NZDataSlice Scheduling​

Slices now go through a shared work queue: an idle worker takes the next waiting slice, which is faster on uneven slices. After the first failure, no new slice starts. Output files are unchanged.

Bug Fixes​

  • Ntile lost rows (pre-existing): the last chunk now always includes its upper bound (rows were lost when the last bucket held a single key value), and a midnight lower bound no longer truncates the time of the upper bound. On Oracle, only date bounds are wrapped in TO_DATE (string keys broke before).
  • Passwords in logs: quoted passwords containing ; (e.g. Password="p;w=1") are now fully masked in logs and telemetry, for every connection type.
  • -C adbc_mssql with a named instance: host\INSTANCE connected to the instance on port 1433 instead of resolving the named instance through the SQL Server Browser.
  • Oracle TNS alias with -U / -X: -C oraodp -S ALIAS -U u -X p failed with ORA-50008: 'USERNAME' is an invalid connection string attribute (same for adbc_oracle).
  • -C nzoledb received a SQL Server connection instead of an OLE DB one.
  • -C nzcopy -m Timepartition generated SQL Server syntax (YEAR() / WEEK()) instead of EXTRACT(...).
  • NZDataSlice with --timestamped: all chunks of one export now share the same timestamp prefix (long exports were split across several prefixes).
  • NZDataSlice log message fix.

Documentation​

Copyright © 2026 Architecture & Performance.