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).
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file streamxfer-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: streamxfer-0.0.2-py3-none-any.whl
- Upload date:
- Size: 25.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b90695b4b55aa7d4a34be5a72530dadcb3c2602f67e1629c7799d19ed58c52c |
|
MD5 | 46cd01194f3c4a57234d65007b34459f |
|
BLAKE2b-256 | f2fa76ddb4a0768f611ba9a712f9e3906acf4b5ca226c2985bb8de7f53adc1cb |