Skip to main content

Announcing FastBCP 0.30

The ARPEIO Team
The ARPEIO Team
2026-03-09 · 5 min · Release · FastBCP

We're excited to announce FastBCP 0.30, a significant release that brings powerful new capabilities for working with temporal data, fine-tuning Parquet exports, and managing complex configurations more efficiently.

This release focuses on three major enhancements: time-based parallel partitioning, Parquet row group configuration, and YAML configuration file support.

What's New in 0.30​

1. Time-Based Parallel Partitioning (Timepartition Method)​

The headline feature of this release is the new Timepartition parallel method, designed specifically for time-series data and large temporal datasets.

Why Time-Based Partitioning?​

When dealing with tables that contain date or datetime columns, traditional partitioning methods (like RangeId or Ntile) may not align with how your data is naturally organized. Time-based partitioning allows FastBCP to:

  • Split work naturally along temporal boundaries (year, month, week, day)
  • Leverage time-based indexes for optimal query performance
  • Enable each parallel thread to export a specific time period independently

How It Works​

The Timepartition method uses a special format for the --distributekeycolumn parameter that specifies both the date column and the desired time granularity:

Syntax:

(datecolumn, year, month, day) # Partition by year, month, and day
(datecolumn, year, month) # Partition by year and month
(datecolumn, year, week) # Partition by year and week
(datecolumn, year) # Partition by year only

Example: Exporting Orders by Month​

Let's export an orders table partitioned by year and month:

.\FastBCP.exe `
--connectiontype "mssql" `
--server "localhost" `
--database "tpch_copy" `
--user "FastUser" `
--password "FastPassword" `
--sourceschema "tpch_10" `
--sourcetable "orders_date_sorted" `
--directory "D:\temp\TestPartition" `
--fileoutput "orders.csv" `
--method "Timepartition" `
--distributekeycolumn "(o_orderdate,year,month)" `
--paralleldegree 16 `
--merge "False"

For complete documentation, see Parallel Parameters.


2. Parquet Row Group Size Configuration​

Available since version 0.30.1

This feature is available starting from FastBCP version 0.30.1.

For users exporting to Parquet format, version 0.30 introduces control over row group size through the FASTBCP_RGSIZE environment variable.

Why Does Row Group Size Matter?​

Row groups are the fundamental unit of parallelization and compression in Parquet files. The size you choose impacts:

  • Query performance - Smaller row groups enable finer-grained filtering
  • Compression ratio - Larger row groups improve compression efficiency
  • Memory usage - Larger row groups require more memory during read/write
  • Parallel processing - Row group boundaries define parallelization opportunities

Default and Configuration​

  • Default value: 1,000,000 rows per row group
  • Configuration: Set via FASTBCP_RGSIZE environment variable before running FastBCP

Example Usage​

# Set the row group size to 500,000 rows
$env:FASTBCP_RGSIZE = "500000"

# Run FastBCP
.\FastBCP.exe `
--connectiontype mssql `
...

For complete documentation, see Parquet Formatting.


3. YAML Configuration File Support​

Complex FastBCP commands with many parameters can become difficult to read and maintain. Version 0.30 introduces the --config parameter for YAML configuration files.

Why YAML Configuration?​

Benefits:

  • Human-readable format with comment support
  • Version control friendly - track configuration changes over time
  • Structured sections - organized by concern (connection, source, output, performance)
  • Reusable - save different configurations for different scenarios
  • Simplified command line - reduce a 15-parameter command to just --config myconfig.yaml
Generate YAML from Command Line

You can use the FastBCP Configuration Wizard to convert your existing command-line parameters into a YAML configuration file. Simply input your parameters and download the generated YAML file.

YAML Structure​

A FastBCP YAML configuration file has five main sections:

# FastBCP Configuration Example

connection: # Database connection details
type: mssql
server: localhost
database: mydb
trusted: true

source: # Source table information
schema: dbo
table: orders

output: # Output file settings
file: "orders_{startdate}.csv"
directory: 'D:\exports\{database}\{schema}\{table}\'
delimiter: "|"
decimal_separator: "."
date_format: "yyyy-MM-dd HH:mm:ss"
encoding: UTF-8

performance: # Parallel execution settings
method: RangeId
degree: -2
distribute_key_column: o_orderkey
merge: false

logging: # Logging and run identification
run_id: mssql_to_csv_parallel

Complete Example​

Here's a production-ready configuration for exporting orders using the RangeId parallel method:

# FastBCP – MSSQL to CSV using RangeId parallel method
connection:
type: mssql
server: localhost
database: tpch10_collation_bin2
trusted: true

source:
schema: dbo
table: orders

output:
file: "mssql_orders_{startdate}.csv"
directory: 'D:\temp\{database}\{schema}\{table}\full\'
delimiter: "|"
decimal_separator: "."
date_format: "yyyy-MM-dd HH:mm:ss"
encoding: UTF-8

performance:
method: RangeId
degree: -2
distribute_key_column: o_orderkey
merge: false

logging:
run_id: mssql_to_csv_parallel-2_rangeid

Usage:

.\FastBCP.exe --config samples\sample_mssql_to_csv.yaml

That's it! No need to remember all the parameter names or manage long PowerShell command lines.

For complete documentation, see Advanced Parameters.


Upgrade Path​

FastBCP 0.30 is fully backward compatible with previous versions. Your existing command-line scripts and JSON settings files will continue to work unchanged.

Want to try it on your own data? Download FastBCP and get a free 30-day trial.

The ARPEIO Team