SQL Server (ADBC) → Parquet
Datatypes conversion mapping when exporting from SQL Server using the ADBC connector (--connectiontype adbc_mssql) to Parquet format.
Platform availability
The ADBC FastDriver connectors (adbc_mssql, adbc_pgsql) are available on Windows x64 and Linux x64 only. They are not supported on Linux ARM64.
info
The ADBC connector does not map every type the way the standard mssql driver does. Compare both pages before switching.
| Source | SQL Server (adbc_mssql) |
| Format | Parquet |
| FastBCP | 1.5.0.0 (ArpeMSSQL 0.7.8) |
| Test Status | OK (31/31 Nullable) |
Since FastBCP 1.5
sql_variantis exported (as text); it failed in 1.4.time(7),datetime2(7)anddatetimeoffset(7)are written with a microsecond unit by default (the 7th digit is dropped), so that older readers (Spark before 3.x) can read the files. Addadbc.arpemssql.timestamp_precision=nanosecondto--sourceconnectstringto keep the 100 ns resolution (nanosecond unit).geographyandgeometryare converted to WKB with GeoParquet metadata (geokey: WKB encoding, spherical edges forgeography), so Parquet readers see them as geometries.adbc.arpemssql.geospatial=wkbgives plain WKB without the metadata,varbinarythe SQL Server serialization.
Parquet Schema: testdatatypes_nullable
| name | physical_type | converted_type | logical_type |
|---|---|---|---|
| col_bigint | INT64 | — | — |
| col_int | INT32 | — | — |
| col_smallint | INT32 | INT_16 | IntType(bitWidth=16, isSigned=1) |
| col_tinyint | INT32 | UINT_8 | IntType(bitWidth=8, isSigned=0) |
| col_bit | BOOLEAN | — | — |
| col_decimal | FIXED_LEN_BYTE_ARRAY | DECIMAL | DecimalType(scale=2, precision=18) |
| col_numeric | FIXED_LEN_BYTE_ARRAY | DECIMAL | DecimalType(scale=2, precision=18) |
| col_money | FIXED_LEN_BYTE_ARRAY | DECIMAL | DecimalType(scale=4, precision=19) |
| col_smallmoney | FIXED_LEN_BYTE_ARRAY | DECIMAL | DecimalType(scale=4, precision=10) |
| col_float | DOUBLE | — | — |
| col_real | FLOAT | — | — |
| col_date | INT32 | DATE | DateType() |
| col_time | INT64 | — | TimeType(isAdjustedToUTC=0, unit=MICROS) |
| col_datetime | INT64 | TIMESTAMP_MILLIS | TimestampType(isAdjustedToUTC=0, unit=MILLIS) |
| col_datetime2 | INT64 | TIMESTAMP_MICROS | TimestampType(isAdjustedToUTC=0, unit=MICROS) |
| col_datetimeoffset | INT64 | TIMESTAMP_MICROS | TimestampType(isAdjustedToUTC=1, unit=MICROS) |
| col_smalldatetime | INT64 | TIMESTAMP_MILLIS | TimestampType(isAdjustedToUTC=0, unit=MILLIS) |
| col_char | BYTE_ARRAY | UTF8 | StringType() |
| col_varchar | BYTE_ARRAY | UTF8 | StringType() |
| col_nchar | BYTE_ARRAY | UTF8 | StringType() |
| col_nvarchar | BYTE_ARRAY | UTF8 | StringType() |
| col_text | BYTE_ARRAY | UTF8 | StringType() |
| col_ntext | BYTE_ARRAY | UTF8 | StringType() |
| col_binary | BYTE_ARRAY | — | — |
| col_varbinary | BYTE_ARRAY | — | — |
| col_image | BYTE_ARRAY | — | — |
| col_uniqueidentifier | BYTE_ARRAY | UTF8 | StringType() |
| col_xml | BYTE_ARRAY | UTF8 | StringType() |
| col_geography | BYTE_ARRAY | — | — (WKB, GeoParquet geo metadata, spherical edges) |
| col_geometry | BYTE_ARRAY | — | — (WKB, GeoParquet geo metadata) |
| col_sql_variant | BYTE_ARRAY | UTF8 | StringType() |