asd
RN APK Build / build (push) Has been cancelled

This commit is contained in:
NishantRajputRN
2026-05-13 17:27:26 +05:30
parent 99ddc3de84
commit 6d7dca7916
+32 -9
View File
@@ -2,8 +2,9 @@
# Bulk copy one SQL Server table to ClickHouse on Ubuntu (or Debian-based). # Bulk copy one SQL Server table to ClickHouse on Ubuntu (or Debian-based).
# #
# Prerequisites (or run with --install-deps): # Prerequisites (or run with --install-deps):
# - sqlcmd: Microsoft mssql-tools18 (/opt/mssql-tools18/bin/sqlcmd) # - sqlcmd: Microsoft mssql-tools18 (/opt/mssql-tools18/bin/sqlcmd) or mssql-tools (/opt/mssql-tools/bin)
# - clickhouse-client # - clickhouse-client
# Optional: SQLCMD_PATH=/full/path/to/sqlcmd if installed outside PATH
# #
# Environment (required for export-import): # Environment (required for export-import):
# MSSQL_HOST e.g. db.example.com # MSSQL_HOST e.g. db.example.com
@@ -19,6 +20,7 @@
# CH_USER default default # CH_USER default default
# CH_PASSWORD optional # CH_PASSWORD optional
# CH_SECURE set to 1 to use TLS (--secure) # CH_SECURE set to 1 to use TLS (--secure)
# SQLCMD_PATH optional full path to sqlcmd if not on PATH
# #
# Example: # Example:
# export MSSQL_HOST=sql.mycompany.internal MSSQL_USER=ro MSSQL_PASSWORD='***' MSSQL_DATABASE=sales # export MSSQL_HOST=sql.mycompany.internal MSSQL_USER=ro MSSQL_PASSWORD='***' MSSQL_DATABASE=sales
@@ -46,7 +48,7 @@ usage() {
$SCRIPT_NAME — export SQL Server data to TSV and load into ClickHouse (Ubuntu/Debian). $SCRIPT_NAME — export SQL Server data to TSV and load into ClickHouse (Ubuntu/Debian).
Commands: Commands:
--install-deps Install mssql-tools18 + clickhouse-client (needs sudo) --install-deps Install mssql-tools18 + clickhouse-client (needs sudo). Run alone FIRST, then migrate-db.
export Export MSSQL table/query to TSV (TabSeparated) export Export MSSQL table/query to TSV (TabSeparated)
import Load TSV into ClickHouse (INSERT FORMAT TabSeparated) import Load TSV into ClickHouse (INSERT FORMAT TabSeparated)
export-import Run export then import export-import Run export then import
@@ -72,6 +74,7 @@ Environment:
MSSQL_TABLES_FILE optional explicit table list path for migrate-db MSSQL_TABLES_FILE optional explicit table list path for migrate-db
CH_HOST, CH_PORT, CH_USER, CH_PASSWORD, CH_SECURE=1 for TLS CH_HOST, CH_PORT, CH_USER, CH_PASSWORD, CH_SECURE=1 for TLS
CH_DOCKER_CONTAINER optional; run clickhouse-client inside this container CH_DOCKER_CONTAINER optional; run clickhouse-client inside this container
SQLCMD_PATH optional; full path to sqlcmd when not on PATH
Notes: Notes:
- ClickHouse columns must match export order and types. - ClickHouse columns must match export order and types.
@@ -81,14 +84,23 @@ EOF
} }
ensure_sqlcmd() { ensure_sqlcmd() {
if [[ -n "${SQLCMD_PATH:-}" ]]; then
[[ -x "$SQLCMD_PATH" ]] || die "SQLCMD_PATH is set but not executable: $SQLCMD_PATH"
export PATH="$(dirname "$SQLCMD_PATH"):$PATH"
fi
if command -v sqlcmd >/dev/null 2>&1; then if command -v sqlcmd >/dev/null 2>&1; then
return 0 return 0
fi fi
if [[ -x /opt/mssql-tools18/bin/sqlcmd ]]; then local d
export PATH="/opt/mssql-tools18/bin:$PATH" for d in /opt/mssql-tools18/bin /opt/mssql-tools/bin; do
if [[ -x "$d/sqlcmd" ]]; then
export PATH="$d:$PATH"
return 0 return 0
fi fi
die "sqlcmd not found. Install mssql-tools18 or run: $0 --install-deps" done
die "sqlcmd not found. On this host run once (needs sudo), then open a new shell or re-login:
$0 --install-deps
If sqlcmd is already installed, add it to PATH or set SQLCMD_PATH=/path/to/sqlcmd"
} }
ensure_clickhouse_client() { ensure_clickhouse_client() {
@@ -502,17 +514,28 @@ install_deps() {
[[ "${ID:-}" == "ubuntu" || "${ID:-}" == "debian" || "${ID_LIKE:-}" == *"debian"* ]] \ [[ "${ID:-}" == "ubuntu" || "${ID:-}" == "debian" || "${ID_LIKE:-}" == *"debian"* ]] \
|| die "This installer expects Ubuntu or Debian." || die "This installer expects Ubuntu or Debian."
export DEBIAN_FRONTEND=noninteractive
$SUDO apt-get update $SUDO apt-get update
$SUDO apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release $SUDO apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
# Microsoft ODBC + sqlcmd # Microsoft ODBC + sqlcmd (Ubuntu codename: use current release; fall back if MS has no prod.list yet)
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \ curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \
| $SUDO gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg | $SUDO gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg
curl -fsSL "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list" \ local ms_ub ms_url
| $SUDO tee /etc/apt/sources.list.d/mssql-release.list >/dev/null ms_ub="$(lsb_release -rs)"
ms_url="https://packages.microsoft.com/config/ubuntu/${ms_ub}/prod.list"
if ! curl -fsSL "$ms_url" -o /tmp/mssql-release.list 2>/dev/null; then
echo "$SCRIPT_NAME: No Microsoft prod.list for Ubuntu ${ms_ub}; trying 22.04 repo (packages often install on newer LTS)." >&2
ms_ub="22.04"
ms_url="https://packages.microsoft.com/config/ubuntu/${ms_ub}/prod.list"
curl -fsSL "$ms_url" -o /tmp/mssql-release.list
fi
$SUDO mv /tmp/mssql-release.list /etc/apt/sources.list.d/mssql-release.list
$SUDO apt-get update $SUDO apt-get update
ACCEPT_EULA=Y $SUDO apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev ACCEPT_EULA=Y $SUDO apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >>"$HOME/.bashrc" || true local path_line='export PATH="$PATH:/opt/mssql-tools18/bin"'
grep -qF 'mssql-tools18/bin' "$HOME/.bashrc" 2>/dev/null || echo "$path_line" >>"$HOME/.bashrc" || true
grep -qF 'mssql-tools18/bin' "$HOME/.profile" 2>/dev/null || echo "$path_line" >>"$HOME/.profile" || true
export PATH="$PATH:/opt/mssql-tools18/bin" export PATH="$PATH:/opt/mssql-tools18/bin"
# ClickHouse client # ClickHouse client