How to Use FastBCP with Docker
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
-eto 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.
