Problem
The JDBC data source is read-only (connectorX). There is no way to df.write from Sail.
Proposal
Add a DataSourceArrowWriter to the same source. PostgreSQL uses Arrow-native ADBC adbc_ingest; MySQL and SQL Server use a SQLAlchemy fallback (no ADBC ingest driver exists for them). Supports append and overwrite (staging-swap).
Open questions for maintainers
- Dependencies — the write path adds
adbc-driver-postgresql, psycopg, sqlalchemy, pandas to the pysail[jdbc] extra; the MySQL/SQL Server DBAPI drivers (pymysql / pymssql) are installed by the user. Acceptable?
- Overwrite semantics — PostgreSQL offers
atomic (staging DROP+RENAME) and truncate; other dialects use a DELETE + INSERT … SELECT swap. Reasonable?
- Dialect scope — PostgreSQL / MySQL / SQL Server to start, more via SQLAlchemy later. OK?
Problem
The JDBC data source is read-only (connectorX). There is no way to
df.writefrom Sail.Proposal
Add a
DataSourceArrowWriterto the same source. PostgreSQL uses Arrow-native ADBCadbc_ingest; MySQL and SQL Server use a SQLAlchemy fallback (no ADBC ingest driver exists for them). Supportsappendandoverwrite(staging-swap).Open questions for maintainers
adbc-driver-postgresql,psycopg,sqlalchemy,pandasto thepysail[jdbc]extra; the MySQL/SQL Server DBAPI drivers (pymysql/pymssql) are installed by the user. Acceptable?atomic(staging DROP+RENAME) andtruncate; other dialects use aDELETE+INSERT … SELECTswap. Reasonable?