Skip to main content

How to Use FastBCP with Docker

Pierre-Antoine Collet
Pierre-Antoine Collet, ARPE.IO Developer
2026-02-16 · 3 min · Integration · FastBCP

The FastBCP Docker image allows you to easily integrate this high-performance bulk copy tool into your data integration workflows, without having to install FastBCP directly on your machines.

Why Use FastBCP with Docker?​

The official arpeio/fastbcp Docker image offers several advantages:

  • Simplified deployment: No installation required, just Docker
  • Portability: Works anywhere Docker is installed
  • Automatic updates: Images automatically updated with each new version and weekly security patches
  • Native integration: Compatible with Kubernetes, Docker Compose, Airflow, and other orchestrators

Prerequisites​

  • Docker 24+ installed on your machine
  • A valid FastBCP license (≥ 0.28.0)
  • Access to a source database (SQL Server, PostgreSQL, Oracle, etc.)

Pull the Docker Image​

The image is available on DockerHub. You can use the latest version or a specific version:

# Latest version
docker pull arpeio/fastbcp:latest

# Specific version
docker pull arpeio/fastbcp:v0.28.3

Example: Export SQL Server Data to Parquet on S3​

Here's a complete example of using FastBCP with Docker to export data from SQL Server to a Parquet file stored on Amazon S3.

1. Prepare Your License​

Since version 0.28.0, the license is passed directly as a parameter:

export licenseContent=$(cat ./FastBCP.lic)

2. Run FastBCP in Docker​

docker run --rm \
-e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} \
-e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} \
-e AWS_REGION=${AWS_REGION} \
arpeio/fastbcp:latest \
--connectiontype "mssql" \
--server "host.docker.internal,1433" \
--user "FastUser" \
--password "FastPassword" \
--database "tpch_test" \
--query "SELECT * FROM dbo.orders WHERE year(o_orderdate)=1998" \
--fileoutput "orders.parquet" \
--directory "s3://arpeioftoutput/dockertest/" \
--paralleldegree 12 \
--parallelmethod "Ntile" \
--distributekeycolumn "o_orderkey" \
--merge false \
--license "$licenseContent"

Command Details​

  • Environment variables: AWS credentials are passed via -e to access the S3 bucket
  • host.docker.internal: Allows access to a SQL Server running on your host machine
  • --fileoutput: Output file name (Parquet format)
  • --directory: S3 path where to store the data
  • --paralleldegree 12: Uses 12 parallel threads for optimal performance
  • --license: Your FastBCP license passed inline

To discover all the possibilities of the Docker image, check out the complete documentation.

3. FastBCP Console Logs​

Settings file not found in the working directory nor in the executable directory
2026-03-02T15:15:37.882 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- The "FastBCP_Settings.json" file does not exist. Using default settings. Console Only with loglevel=Information
2026-03-02T15:15:37.892 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- FastBCP Trial – will expires on "2026‑03‑27" (24 day(s) left).
2026-03-02T15:15:37.892 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Starting
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- FastBCP Version : "0.29.2.0" Architecture : "X64" - Framework : ".NET 8.0.24"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Internal Trace ID : "5ccea857-1538-4a28-8b1c-cfe5c51fbd43"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Internal Run ID : "5ccea857-1538-4a28-8b1c-cfe5c51fbd43"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- OS : "Debian GNU/Linux 13 (trixie)"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Connection Type : "mssql"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Source SqlInstance : "sql22,1433"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Source Database : "tpch"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Source Schema : "tpch10"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Source Table : "orders"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Trusted Connection : False
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- User : "migadmin"
2026-03-02T15:15:37.893 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Output File : "orders.parquet"
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Output Directory : /data/parquet
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Degree : 12
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Distribute Method : "Ntile"
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Distribute Column : "o_orderkey"
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Decimal Separator : ","
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Delimiter : "|"
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Use quotes : False
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Date format: "yyyy-MM-dd"
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Encoding : "UTF-8"
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- No Header : False
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Timestamped : False
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Boolean Format : "automatic"
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Cloud Profile : ""
2026-03-02T15:15:37.894 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Application Intent : "ReadOnly"
2026-03-02T15:15:37.906 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- file extension is ".parquet"
2026-03-02T15:15:37.909 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Encoding used : Unicode (UTF-8) - 65001 - utf-8
2026-03-02T15:15:37.965 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Connection String : "Data Source=sql22,1433;Initial Catalog=tpch;User ID=migadmin;Password=xxxxx;Connect Timeout=120;Encrypt=True;Trust Server Certificate=True;Application Name=FastBCP;Application Intent=ReadOnly"
2026-03-02T15:15:38.086 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Source Database Version : Microsoft SQL Server 2022 (RTM-CU2) (KB5023127) - 16.0.4015.1 (X64) Feb 27 2023 15:40:01 Copyright (C) 2022 Microsoft Corporation Developer Edition (64-bit) on Linux (Ubuntu 20.04.5 LTS) <X64>
2026-03-02T15:15:38.110 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Get DataTypes with header end : Elapsed=6 ms
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Data Segments Computation Completed in 260 ms
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Distribute Column Type : "Int32"
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 0 : 1 : 1 - 5000001 or "o_orderkey" is null
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 1 : 2 : 5000002 - 10000002
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 2 : 3 : 10000003 - 15000003
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 3 : 4 : 15000004 - 20000004
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 4 : 5 : 20000005 - 25000005
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 5 : 6 : 25000006 - 30000006
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 6 : 7 : 30000007 - 35000007
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 7 : 8 : 35000032 - 40000032
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 8 : 9 : 40000033 - 45000033
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 9 : 10 : 45000034 - 50000034
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 10 : 11 : 50000035 - 55000035
2026-03-02T15:15:38.372 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Ntile Block 11 : 12 : 55000036 - 60000000
2026-03-02T15:15:46.611 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 002 for o_orderkey between 10000003 and 15000003 into /data/parquet/orders_chunk_002.parquet : 1250001 rows x 9 columns in 8234ms
2026-03-02T15:15:46.611 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 011 for o_orderkey between 55000036 and 60000000 into /data/parquet/orders_chunk_011.parquet : 1249989 rows x 9 columns in 8234ms
2026-03-02T15:15:46.790 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 003 for o_orderkey between 15000004 and 20000004 into /data/parquet/orders_chunk_003.parquet : 1250001 rows x 9 columns in 8413ms
2026-03-02T15:15:46.797 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 005 for o_orderkey between 25000006 and 30000006 into /data/parquet/orders_chunk_005.parquet : 1250001 rows x 9 columns in 8420ms
2026-03-02T15:15:46.936 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 008 for o_orderkey between 40000033 and 45000033 into /data/parquet/orders_chunk_008.parquet : 1250001 rows x 9 columns in 8559ms
2026-03-02T15:15:47.139 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 010 for o_orderkey between 50000035 and 55000035 into /data/parquet/orders_chunk_010.parquet : 1250001 rows x 9 columns in 8763ms
2026-03-02T15:15:47.154 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 000 for o_orderkey between 1 and 5000001 into /data/parquet/orders_chunk_000.parquet : 1250001 rows x 9 columns in 8777ms
2026-03-02T15:15:47.247 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 009 for o_orderkey between 45000034 and 50000034 into /data/parquet/orders_chunk_009.parquet : 1250001 rows x 9 columns in 8870ms
2026-03-02T15:15:47.308 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 006 for o_orderkey between 30000007 and 35000007 into /data/parquet/orders_chunk_006.parquet : 1250001 rows x 9 columns in 8931ms
2026-03-02T15:15:47.309 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 001 for o_orderkey between 5000002 and 10000002 into /data/parquet/orders_chunk_001.parquet : 1250001 rows x 9 columns in 8932ms
2026-03-02T15:15:47.363 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 007 for o_orderkey between 35000032 and 40000032 into /data/parquet/orders_chunk_007.parquet : 1250001 rows x 9 columns in 8986ms
2026-03-02T15:15:47.366 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Load Completed for Query 004 for o_orderkey between 20000005 and 25000005 into /data/parquet/orders_chunk_004.parquet : 1250001 rows x 9 columns in 8989ms
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- files generation end : Elapsed=9257 ms - maxdop=12
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Total data rows : 15000000
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Total data columns : 9
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Total cells : 135000000
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Throughput rows : 1568531 rows/s
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Throughput cells : 14116787 cells/s
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Total time : Elapsed=9563 ms
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Total data rows : 15000000
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Total data columns : 9
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Total cells : 135000000
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Final Throughput rows : 1568482 rows/s
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Final Throughput cells : 14116346 cells/s
2026-03-02T15:15:47.368 +00:00 -|- FastBCP -|- 5ccea857-1538-4a28-8b1c-cfe5c51fbd43 -|- INFORMATION -|- orders.parquet -|- Completed Load

Conclusion​

The FastBCP Docker image greatly simplifies the deployment and use of FastBCP in your data integration environments. Whether for one-off exports or automated data pipelines, Docker provides the flexibility and portability required by modern data architectures.

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