Add company rename to copy mode, add current name when renaming a company
This commit is contained in:
+57
-7
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Version: 1.8.0
|
||||
# Version: 1.9.0
|
||||
# Author: Tomi Eckert
|
||||
# ==============================================================================
|
||||
# HANA Database Manager Menu (hanamgr.sh)
|
||||
@@ -28,6 +28,15 @@ check_hdbsql() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to fetch the current company name from a schema
|
||||
get_company_name() {
|
||||
local key="$1"
|
||||
local schema="$2"
|
||||
local result
|
||||
result=$("$HDBSQL_CMD" -U "$key" -a -x "SELECT \"CompnyName\" FROM \"${schema}\".OADM;" 2>/dev/null | tr -d '"' | xargs)
|
||||
echo "$result"
|
||||
}
|
||||
|
||||
# Function to execute a SQL query and capture the exit code
|
||||
execute_sql() {
|
||||
local key="$1"
|
||||
@@ -315,16 +324,35 @@ do_copy() {
|
||||
|
||||
read -p "Replace existing objects in target schema? (y/N): " replace_opt
|
||||
|
||||
read -p "Rename company name in the copied schema? [Y/n]: " rename_company_opt
|
||||
rename_company_opt="${rename_company_opt:-Y}"
|
||||
local new_compny_name=""
|
||||
if [[ "$rename_company_opt" =~ ^[Yy]$ ]]; then
|
||||
local current_name
|
||||
current_name=$(get_company_name "$GLOBAL_USER_KEY" "$source_schema")
|
||||
if [[ -n "$current_name" ]]; then
|
||||
echo " Current company name (source): ${current_name}"
|
||||
fi
|
||||
read -p "Enter NEW Company Name: " new_compny_name
|
||||
if [[ -z "$new_compny_name" ]]; then
|
||||
echo -e "\033[33m[WARN] No company name entered, skipping rename.\033[0m"
|
||||
rename_company_opt="N"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "$GLOBAL_USER_KEY" || -z "$target_schema" || -z "$export_path" ]]; then
|
||||
echo -e "\033[31m[ERROR] Key, Target Schema, and Path are required.\033[0m"
|
||||
return
|
||||
fi
|
||||
|
||||
local total_steps=2
|
||||
[[ "$rename_company_opt" =~ ^[Yy]$ ]] && total_steps=3
|
||||
|
||||
# 1. Export
|
||||
echo -e "\n-Step 1/2: Exporting source schema '${source_schema}' to '${export_path}'..."
|
||||
echo -e "\n- Step 1/${total_steps}: Exporting source schema '${source_schema}' to '${export_path}'..."
|
||||
mkdir -p "$export_path"
|
||||
local temp_export_dir=$(mktemp -d "${export_path}/copy_export_${source_schema}_XXXXXXXX")
|
||||
echo "-Using temporary export directory: ${temp_export_dir}"
|
||||
echo "- Using temporary export directory: ${temp_export_dir}"
|
||||
|
||||
local export_query="EXPORT \"${source_schema}\".\"*\" AS BINARY INTO '${temp_export_dir}' WITH REPLACE THREADS ${threads} NO DEPENDENCIES;"
|
||||
|
||||
@@ -336,7 +364,7 @@ do_copy() {
|
||||
echo -e "\033[32m[DONE] Export phase completed successfully.\033[0m"
|
||||
|
||||
# 2. Import-Rename
|
||||
echo -e "\n-Step 2/2: Importing and renaming to '${target_schema}'..."
|
||||
echo -e "\n- Step 2/${total_steps}: Importing and renaming schema to '${target_schema}'..."
|
||||
local import_options="IGNORE EXISTING"
|
||||
if [[ "$replace_opt" =~ ^[Yy]$ ]]; then
|
||||
import_options="REPLACE"
|
||||
@@ -345,15 +373,32 @@ do_copy() {
|
||||
|
||||
local import_query="IMPORT \"${source_schema}\".\"*\" AS BINARY FROM '${temp_export_dir}' WITH ${import_options} THREADS ${threads};"
|
||||
|
||||
if execute_sql "$GLOBAL_USER_KEY" "$import_query"; then
|
||||
echo -e "\033[32m[DONE] Successfully copied schema '${source_schema}' to '${target_schema}'.\033[0m"
|
||||
else
|
||||
if ! execute_sql "$GLOBAL_USER_KEY" "$import_query"; then
|
||||
echo -e "\033[31m[ERROR] Import phase failed.\033[0m"
|
||||
echo "- Cleaning up temporary files..."
|
||||
rm -rf "$temp_export_dir"
|
||||
return
|
||||
fi
|
||||
echo -e "\033[32m[DONE] Successfully copied schema '${source_schema}' to '${target_schema}'.\033[0m"
|
||||
|
||||
# Cleanup
|
||||
echo "- Cleaning up temporary files..."
|
||||
rm -rf "$temp_export_dir"
|
||||
|
||||
# 3. Rename company name (optional)
|
||||
if [[ "$rename_company_opt" =~ ^[Yy]$ ]]; then
|
||||
echo -e "\n- Step 3/${total_steps}: Renaming company name in '${target_schema}' to '${new_compny_name}'..."
|
||||
|
||||
echo " -> Updating CINF table..."
|
||||
local q_cinf="UPDATE \"${target_schema}\".CINF SET \"CompnyName\" = '${new_compny_name}';"
|
||||
execute_sql "$GLOBAL_USER_KEY" "$q_cinf" > /dev/null
|
||||
|
||||
echo " -> Updating OADM table..."
|
||||
local q_oadm="UPDATE \"${target_schema}\".OADM SET \"CompnyName\" = '${new_compny_name}', \"PrintHeadr\" = '${new_compny_name}';"
|
||||
execute_sql "$GLOBAL_USER_KEY" "$q_oadm" > /dev/null
|
||||
|
||||
echo -e "\033[32m[DONE] Company name updated successfully.\033[0m"
|
||||
fi
|
||||
}
|
||||
|
||||
do_backup() {
|
||||
@@ -429,6 +474,11 @@ do_rename_db() {
|
||||
echo -e "\n\033[1m=== Rename Database (Company Name) ===\033[0m"
|
||||
select_schema "$GLOBAL_USER_KEY"
|
||||
local schema_name="$SELECTED_SCHEMA"
|
||||
local current_name
|
||||
current_name=$(get_company_name "$GLOBAL_USER_KEY" "$schema_name")
|
||||
if [[ -n "$current_name" ]]; then
|
||||
echo " Current company name: ${current_name}"
|
||||
fi
|
||||
read -p "Enter NEW Company Name: " new_compny_name
|
||||
|
||||
if [[ -z "$GLOBAL_USER_KEY" || -z "$schema_name" || -z "$new_compny_name" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user