StreamXfer
StreamXfer is a powerful tool for streaming data from SQL Server to local or object storage(S3) for seamless transfer using UNIX pipe, supporting various general data formats(CSV, TSV, JSON).
Supported OS: Linux, macOS
I've migrated 10TB data from SQL Server into Amazon Redshift using this tool.
Demo
Installation
Before installing StreamXfer, you need to install the following dependencies:
- mssql-tools: SQL Docs - bcp Utility
- lzop: Download
Then, install StreamXfer from PyPI:
$ python3 -m pip install streamxfer
Alternatively, install from source:
$ git clone https://github.com/zhiweio/StreamXfer.git && cd StreamXfer/
$ python3 setup.py install
Usage
StreamXfer can be used as a command-line tool or as a library in Python.
Command-line Usage
$ stx [OPTIONS] PYMSSQL_URL TABLE OUTPUT_PATH
Here is an example command:
$ stx 'mssql+pymssql:://user:pass@host:port/db' '[dbo].[test]' /local/path/to/dir/
You can also use the following options:
-F, --format: The data format (CSV, TSV, or JSON).--compress-type: The compression type (LZOP or GZIP).
For more information on the options, run stx --help.
$ stx --help
Usage: stx [OPTIONS] PYMSSQL_URL TABLE OUTPUT_PATH
StreamXfer is a powerful tool for streaming data from SQL Server to local or
object storage(S3) for seamless transfer using UNIX pipe, supporting various
general data formats(CSV, TSV, JSON).
Examples:
stx 'mssql+pymssql:://user:pass@host:port/db' '[dbo].[test]' /local/path/to/dir/
stx 'mssql+pymssql:://user:pass@host:port/db' '[dbo].[test]' s3://bucket/path/to/dir/
Options:
-F, --format [CSV|TSV|JSON] [default: JSON]
-C, --compress-type [LZOP|GZIP]
-h, --help Show this message and exit.
Library Usage
To use StreamXfer as a library in Python, you can import the StreamXfer class, and use them to build and pump the data stream.
Here is an example code snippet:
from streamxfer import StreamXfer
from streamxfer.format import Format
from streamxfer.compress import CompressType
sx = StreamXfer(
"mssql+pymssql:://user:pass@host:port/db",
format=Format.CSV,
compress_type=CompressType.LZOP,
chunk_size=1000000,
)
sx.build("[dbo].[test]", path="s3://bucket/path/to/dir/")
sx.pump()
Related
Here are some related articles
Authors
License
Metadata
Release files for streamxfer 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| streamxfer-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Release files / streamxfer-0.0.2-py3-none-any.whl
| Download URL | streamxfer-0.0.2-py3-none-any.whl |
|---|---|
| Size | 25.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b90695b4b55aa7d4a34be5a72530dadcb3c2602f67e1629c7799d19ed58c52c
|
|
BLAKE2b-256 checksum How to use checksums |
f2fa76ddb4a0768f611ba9a712f9e3906acf4b5ca226c2985bb8de7f53adc1cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.19
|