fix hanamgr not able to compress exports
This commit is contained in:
+38
-22
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Version: 1.2.0
|
# Version: 1.3.1
|
||||||
# Author: Tomi Eckert
|
# Author: Tomi Eckert
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# HANA Database Manager Menu (hanamgr.sh)
|
# HANA Database Manager Menu (hanamgr.sh)
|
||||||
@@ -109,12 +109,11 @@ select_schema() {
|
|||||||
|
|
||||||
do_export() {
|
do_export() {
|
||||||
echo -e "\n\033[1m=== Export Schema ===\033[0m"
|
echo -e "\n\033[1m=== Export Schema ===\033[0m"
|
||||||
read -p "Enter HDBUSERSTORE Key: " user_key
|
select_schema "$GLOBAL_USER_KEY"
|
||||||
select_schema "$user_key"
|
|
||||||
local schema_name="$SELECTED_SCHEMA"
|
local schema_name="$SELECTED_SCHEMA"
|
||||||
read -p "Enter Target Directory Path: " target_path
|
read -p "Enter Target Directory or File Path (.tar.gz): " target_path
|
||||||
|
|
||||||
local max_threads=$(nproc 2>/dev/null || echo 1)
|
local max_threads=$(nproc --all 2>/dev/null || echo 1)
|
||||||
local half_threads=$((max_threads / 2))
|
local half_threads=$((max_threads / 2))
|
||||||
[[ $half_threads -lt 1 ]] && half_threads=1
|
[[ $half_threads -lt 1 ]] && half_threads=1
|
||||||
|
|
||||||
@@ -123,16 +122,27 @@ do_export() {
|
|||||||
|
|
||||||
read -p "Compress output as tar.gz? (y/N): " compress
|
read -p "Compress output as tar.gz? (y/N): " compress
|
||||||
|
|
||||||
if [[ -z "$user_key" || -z "$schema_name" || -z "$target_path" ]]; then
|
if [[ -z "$GLOBAL_USER_KEY" || -z "$schema_name" || -z "$target_path" ]]; then
|
||||||
echo -e "\033[31m[❌] Error: Key, Schema, and Path are required.\033[0m"
|
echo -e "\033[31m[❌] Error: Key, Schema, and Path are required.\033[0m"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "\n[⬇️] Starting export of schema '${schema_name}'..."
|
echo -e "\n[⬇️] Starting export of schema '${schema_name}'..."
|
||||||
local export_dir="$target_path"
|
local export_dir="$target_path"
|
||||||
|
local archive_file=""
|
||||||
|
|
||||||
if [[ "$compress" =~ ^[Yy]$ ]]; then
|
if [[ "$compress" =~ ^[Yy]$ ]]; then
|
||||||
export_dir=$(mktemp -d "${target_path}/export_${schema_name}_XXXXXXXX")
|
# If the target path ends with .tar.gz, treat it as the final filename
|
||||||
|
if [[ "$target_path" == *.tar.gz ]]; then
|
||||||
|
archive_file="$target_path"
|
||||||
|
local target_dir=$(dirname "$target_path")
|
||||||
|
mkdir -p "$target_dir"
|
||||||
|
export_dir=$(mktemp -d "${target_dir}/export_${schema_name}_XXXXXXXX")
|
||||||
|
else
|
||||||
|
archive_file="${target_path}/${schema_name}_export_$(date +%Y%m%d_%H%M%S).tar.gz"
|
||||||
|
mkdir -p "$target_path"
|
||||||
|
export_dir=$(mktemp -d "${target_path}/export_${schema_name}_XXXXXXXX")
|
||||||
|
fi
|
||||||
echo "[ℹ️] Using temporary export directory: ${export_dir}"
|
echo "[ℹ️] Using temporary export directory: ${export_dir}"
|
||||||
else
|
else
|
||||||
mkdir -p "$export_dir"
|
mkdir -p "$export_dir"
|
||||||
@@ -140,11 +150,10 @@ do_export() {
|
|||||||
|
|
||||||
local query="EXPORT \"${schema_name}\".\"*\" AS BINARY INTO '${export_dir}' WITH REPLACE THREADS ${threads} NO DEPENDENCIES;"
|
local query="EXPORT \"${schema_name}\".\"*\" AS BINARY INTO '${export_dir}' WITH REPLACE THREADS ${threads} NO DEPENDENCIES;"
|
||||||
|
|
||||||
if execute_sql "$user_key" "$query"; then
|
if execute_sql "$GLOBAL_USER_KEY" "$query"; then
|
||||||
echo -e "\033[32m[✅] Successfully exported schema '${schema_name}'.\033[0m"
|
echo -e "\033[32m[✅] Successfully exported schema '${schema_name}'.\033[0m"
|
||||||
|
|
||||||
if [[ "$compress" =~ ^[Yy]$ ]]; then
|
if [[ "$compress" =~ ^[Yy]$ ]]; then
|
||||||
local archive_file="${target_path}/${schema_name}_export_$(date +%Y%m%d_%H%M%S).tar.gz"
|
|
||||||
echo "[📦] Compressing export to ${archive_file}..."
|
echo "[📦] Compressing export to ${archive_file}..."
|
||||||
|
|
||||||
if command -v pigz &> /dev/null; then
|
if command -v pigz &> /dev/null; then
|
||||||
@@ -175,7 +184,6 @@ do_import() {
|
|||||||
echo -e "\n\033[1m=== Import Schema ===\033[0m"
|
echo -e "\n\033[1m=== Import Schema ===\033[0m"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -p "Enter HDBUSERSTORE Key: " user_key
|
|
||||||
read -p "Enter Source Schema Name (as it was exported): " schema_name
|
read -p "Enter Source Schema Name (as it was exported): " schema_name
|
||||||
|
|
||||||
local new_schema_name=""
|
local new_schema_name=""
|
||||||
@@ -189,7 +197,7 @@ do_import() {
|
|||||||
|
|
||||||
read -p "Enter Source Path (Directory or .tar.gz): " source_path
|
read -p "Enter Source Path (Directory or .tar.gz): " source_path
|
||||||
|
|
||||||
local max_threads=$(nproc 2>/dev/null || echo 1)
|
local max_threads=$(nproc --all 2>/dev/null || echo 1)
|
||||||
local half_threads=$((max_threads / 2))
|
local half_threads=$((max_threads / 2))
|
||||||
[[ $half_threads -lt 1 ]] && half_threads=1
|
[[ $half_threads -lt 1 ]] && half_threads=1
|
||||||
|
|
||||||
@@ -198,7 +206,7 @@ do_import() {
|
|||||||
|
|
||||||
read -p "Replace existing objects? (y/N): " replace_opt
|
read -p "Replace existing objects? (y/N): " replace_opt
|
||||||
|
|
||||||
if [[ -z "$user_key" || -z "$schema_name" || -z "$source_path" ]]; then
|
if [[ -z "$GLOBAL_USER_KEY" || -z "$schema_name" || -z "$source_path" ]]; then
|
||||||
echo -e "\033[31m[❌] Error: Key, Schema, and Path are required.\033[0m"
|
echo -e "\033[31m[❌] Error: Key, Schema, and Path are required.\033[0m"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@@ -240,7 +248,7 @@ do_import() {
|
|||||||
|
|
||||||
local query="IMPORT \"${schema_name}\".\"*\" AS BINARY FROM '${import_dir}' WITH ${import_options} THREADS ${threads};"
|
local query="IMPORT \"${schema_name}\".\"*\" AS BINARY FROM '${import_dir}' WITH ${import_options} THREADS ${threads};"
|
||||||
|
|
||||||
if execute_sql "$user_key" "$query"; then
|
if execute_sql "$GLOBAL_USER_KEY" "$query"; then
|
||||||
echo -e "\033[32m[✅] Successfully imported schema.\033[0m"
|
echo -e "\033[32m[✅] Successfully imported schema.\033[0m"
|
||||||
else
|
else
|
||||||
echo -e "\033[31m[❌] Error: Import failed.\033[0m"
|
echo -e "\033[31m[❌] Error: Import failed.\033[0m"
|
||||||
@@ -254,11 +262,10 @@ do_import() {
|
|||||||
|
|
||||||
do_drop() {
|
do_drop() {
|
||||||
echo -e "\n\033[1m=== Drop Schema ===\033[0m"
|
echo -e "\n\033[1m=== Drop Schema ===\033[0m"
|
||||||
read -p "Enter HDBUSERSTORE Key: " user_key
|
select_schema "$GLOBAL_USER_KEY"
|
||||||
select_schema "$user_key"
|
|
||||||
local schema_name="$SELECTED_SCHEMA"
|
local schema_name="$SELECTED_SCHEMA"
|
||||||
|
|
||||||
if [[ -z "$user_key" || -z "$schema_name" ]]; then
|
if [[ -z "$GLOBAL_USER_KEY" || -z "$schema_name" ]]; then
|
||||||
echo -e "\033[31m[❌] Error: Key and Schema Name are required.\033[0m"
|
echo -e "\033[31m[❌] Error: Key and Schema Name are required.\033[0m"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@@ -269,7 +276,7 @@ do_drop() {
|
|||||||
if [[ "$confirm" == "YES" ]]; then
|
if [[ "$confirm" == "YES" ]]; then
|
||||||
echo "[🗑️] Dropping schema '${schema_name}'..."
|
echo "[🗑️] Dropping schema '${schema_name}'..."
|
||||||
local query="DROP SCHEMA \"${schema_name}\" CASCADE"
|
local query="DROP SCHEMA \"${schema_name}\" CASCADE"
|
||||||
if execute_sql "$user_key" "$query"; then
|
if execute_sql "$GLOBAL_USER_KEY" "$query"; then
|
||||||
echo -e "\033[32m[✅] Schema successfully dropped.\033[0m"
|
echo -e "\033[32m[✅] Schema successfully dropped.\033[0m"
|
||||||
else
|
else
|
||||||
echo -e "\033[31m[❌] Error: Failed to drop schema.\033[0m"
|
echo -e "\033[31m[❌] Error: Failed to drop schema.\033[0m"
|
||||||
@@ -281,12 +288,11 @@ do_drop() {
|
|||||||
|
|
||||||
do_rename_db() {
|
do_rename_db() {
|
||||||
echo -e "\n\033[1m=== Rename Database (Company Name) ===\033[0m"
|
echo -e "\n\033[1m=== Rename Database (Company Name) ===\033[0m"
|
||||||
read -p "Enter HDBUSERSTORE Key: " user_key
|
select_schema "$GLOBAL_USER_KEY"
|
||||||
select_schema "$user_key"
|
|
||||||
local schema_name="$SELECTED_SCHEMA"
|
local schema_name="$SELECTED_SCHEMA"
|
||||||
read -p "Enter NEW Company Name: " new_compny_name
|
read -p "Enter NEW Company Name: " new_compny_name
|
||||||
|
|
||||||
if [[ -z "$user_key" || -z "$schema_name" || -z "$new_compny_name" ]]; then
|
if [[ -z "$GLOBAL_USER_KEY" || -z "$schema_name" || -z "$new_compny_name" ]]; then
|
||||||
echo -e "\033[31m[❌] Error: Key, Schema Name, and New Company Name are required.\033[0m"
|
echo -e "\033[31m[❌] Error: Key, Schema Name, and New Company Name are required.\033[0m"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@@ -296,12 +302,12 @@ do_rename_db() {
|
|||||||
# Update CINF
|
# Update CINF
|
||||||
echo " -> Updating CINF table..."
|
echo " -> Updating CINF table..."
|
||||||
local q_cinf="UPDATE \"${schema_name}\".CINF SET \"CompnyName\" = '${new_compny_name}';"
|
local q_cinf="UPDATE \"${schema_name}\".CINF SET \"CompnyName\" = '${new_compny_name}';"
|
||||||
execute_sql "$user_key" "$q_cinf" > /dev/null
|
execute_sql "$GLOBAL_USER_KEY" "$q_cinf" > /dev/null
|
||||||
|
|
||||||
# Update OADM
|
# Update OADM
|
||||||
echo " -> Updating OADM table..."
|
echo " -> Updating OADM table..."
|
||||||
local q_oadm="UPDATE \"${schema_name}\".OADM SET \"CompnyName\" = '${new_compny_name}', \"PrintHeadr\" = '${new_compny_name}';"
|
local q_oadm="UPDATE \"${schema_name}\".OADM SET \"CompnyName\" = '${new_compny_name}', \"PrintHeadr\" = '${new_compny_name}';"
|
||||||
execute_sql "$user_key" "$q_oadm" > /dev/null
|
execute_sql "$GLOBAL_USER_KEY" "$q_oadm" > /dev/null
|
||||||
|
|
||||||
echo -e "\033[32m[✅] Database renamed successfully.\033[0m"
|
echo -e "\033[32m[✅] Database renamed successfully.\033[0m"
|
||||||
}
|
}
|
||||||
@@ -310,6 +316,16 @@ do_rename_db() {
|
|||||||
|
|
||||||
check_hdbsql
|
check_hdbsql
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "========================================================"
|
||||||
|
echo " HANA Database Manager Init "
|
||||||
|
echo "========================================================"
|
||||||
|
read -p "Enter HDBUSERSTORE Key: " GLOBAL_USER_KEY
|
||||||
|
if [[ -z "$GLOBAL_USER_KEY" ]]; then
|
||||||
|
echo -e "\033[31m[❌] Error: Key is required.\033[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
echo
|
echo
|
||||||
echo "========================================================"
|
echo "========================================================"
|
||||||
|
|||||||
+1
-1
@@ -16,4 +16,4 @@ SCRIPT_PACKAGES["monitor"]="Monitor Suite|1.3.1|Scripts for monitoring system he
|
|||||||
SCRIPT_PACKAGES["keymanager"]="Key Manager|1.2.3|A utility for managing HDB user keys for SAP HANA.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/keymanager.sh"
|
SCRIPT_PACKAGES["keymanager"]="Key Manager|1.2.3|A utility for managing HDB user keys for SAP HANA.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/keymanager.sh"
|
||||||
SCRIPT_PACKAGES["cleaner"]="File Cleaner|1.1.0|A simple script to clean up temporary files and logs.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/cleaner.sh"
|
SCRIPT_PACKAGES["cleaner"]="File Cleaner|1.1.0|A simple script to clean up temporary files and logs.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/cleaner.sh"
|
||||||
SCRIPT_PACKAGES["hanatool"]="HANA Tool|1.6.0|A command-line tool for various SAP HANA administration tasks.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanatool.sh"
|
SCRIPT_PACKAGES["hanatool"]="HANA Tool|1.6.0|A command-line tool for various SAP HANA administration tasks.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanatool.sh"
|
||||||
SCRIPT_PACKAGES["hanamgr"]="HANA Manager UI|1.2.0|An interactive command-line menu for managing SAP HANA schemas and databases.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanamgr.sh"
|
SCRIPT_PACKAGES["hanamgr"]="HANA Manager UI|1.3.1|An interactive command-line menu for managing SAP HANA schemas and databases.|https://git.technopunk.space/tomi/Scripts/raw/branch/main/hanamgr.sh"
|
||||||
|
|||||||
Reference in New Issue
Block a user