From fb767d19cec862eb5c9187a787385d406f6facf5 Mon Sep 17 00:00:00 2001 From: NishantRajputRN Date: Wed, 13 May 2026 17:33:38 +0530 Subject: [PATCH] sa --- scripts/mssql_clickhouse_migrate.sh | 47 +++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/scripts/mssql_clickhouse_migrate.sh b/scripts/mssql_clickhouse_migrate.sh index 0938de5..6e5f64a 100755 --- a/scripts/mssql_clickhouse_migrate.sh +++ b/scripts/mssql_clickhouse_migrate.sh @@ -95,12 +95,17 @@ ensure_sqlcmd() { if command -v sqlcmd >/dev/null 2>&1; then return 0 fi - die "sqlcmd not found. Install Microsoft tools, then retry (same shell is OK): + die "sqlcmd not found (no Microsoft mssql-tools18 on this machine yet). + +Install it with (needs sudo; ~2 minutes): $0 --install-deps -Or: export PATH=\"\$PATH:/opt/mssql-tools18/bin\" -Or set: SQLCMD_PATH=/path/to/sqlcmd" +Then re-run migrate-db. Quick check: + + ls -la /opt/mssql-tools18/bin/sqlcmd + +Or set SQLCMD_PATH=/full/path/to/sqlcmd if you installed sqlcmd elsewhere." } ensure_clickhouse_client() { @@ -518,25 +523,41 @@ install_deps() { $SUDO apt-get update $SUDO apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release - # Microsoft ODBC + sqlcmd (Ubuntu codename: use current release; fall back if MS has no prod.list yet) + # Microsoft ODBC + sqlcmd curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \ | $SUDO gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg - local ms_ub ms_url - 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 + + local ms_rel ms_url + ms_rel="$(lsb_release -rs)" + if [[ "${ID:-}" == "debian" ]]; then + ms_url="https://packages.microsoft.com/config/debian/${ms_rel}/prod.list" + if ! curl -fsSL "$ms_url" -o /tmp/mssql-release.list 2>/dev/null; then + echo "$SCRIPT_NAME: No Microsoft prod.list for Debian ${ms_rel}; trying 12 (bookworm)." >&2 + ms_url="https://packages.microsoft.com/config/debian/12/prod.list" + curl -fsSL "$ms_url" -o /tmp/mssql-release.list + fi + else + ms_url="https://packages.microsoft.com/config/ubuntu/${ms_rel}/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_rel}; trying 22.04 repo." >&2 + ms_url="https://packages.microsoft.com/config/ubuntu/22.04/prod.list" + curl -fsSL "$ms_url" -o /tmp/mssql-release.list + fi fi $SUDO mv /tmp/mssql-release.list /etc/apt/sources.list.d/mssql-release.list $SUDO apt-get update ACCEPT_EULA=Y $SUDO apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev + + export PATH="/opt/mssql-tools18/bin:/opt/mssql-tools/bin:${PATH:-}" + if ! command -v sqlcmd >/dev/null 2>&1; then + die "apt reported success but sqlcmd is still missing. Inspect package contents: + dpkg -L mssql-tools18 2>/dev/null | grep -E '/sqlcmd$' || true + Try: sudo apt-get install -f && sudo apt-get install -y msodbcsql18 mssql-tools18" + fi + 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" # ClickHouse client $SUDO mkdir -p /etc/apt/keyrings