overwrite_column

Go

📊 CSV/Excel Data Processing Tool

Go utility for batch processing CSV/Excel files with value replacement in specific columns.

Workflow

✨ Key Features

  • Excel to CSV Conversion: Automatically converts .xlsx files to CSV
  • Value Mapping: Replaces values in specified columns using configurable rules
  • Batch Processing: Processes all files in input directory
  • Error Resilient: Skips unsupported files and handles conversion errors gracefully
  • Structured Output: Organizes results in dedicated folders

⚙️ Prerequisites

  • Go 1.16+
  • Excelize library: go get github.com/xuri/excelize/v2

🔧 Configuration (.env)

DATA_OUTPUT_DIR=data      # Output directory for processed files
DOCS_DIR=docs             # Input directory containing source files
COLUMN_NAME=status        # Target column for value replacement
VALUES=active,inactive   # Original values to match (comma-separated)
OVERWRITE=ACTIVE,INACTIVE # New values for replacement (comma-separated)
DEFAULT=UNKNOWN          # Default value for unmatched entries

🚀 Installation & Usage

  1. Clone repository:
git clone https://github.com/yourusername/data-processor.git
cd data-processor
  1. Install dependencies:
go mod tidy
  1. Configure .env file:
cp .env.example .env
nano .env
  1. Run processor:
go run main.go

📌 Example Workflow

Input File (data.xlsx):

id,name,status
1,John,active
2,Mary,inactive
3,Peter,pending

Output File (sanitized_data.csv):

id,name,status
1,John,ACTIVE
2,Mary,INACTIVE
3,Peter,UNKNOWN

🔄 Processing Flow

🛑 Error Handling

Error CaseResolution
Missing required columnProcess terminates with error message
Empty input fileFile skipped, error logged
Invalid Excel formatConversion error logged, file skipped
Permission issuesDirectory creation errors logged

🔧 Customization Options

  1. Add New Mappings:
# .env
VALUES=high,medium,low
OVERWRITE=CRITICAL,WARNING,INFO
  1. Extend File Support:
// Add new case for ODS files
case ".ods":
    return convertODSToCSV(...)
  1. Multiple Column Processing: Modify code to accept multiple COLUMN_NAME entries

  2. Custom Fallback Logic:

// Change default value logic
mapped = strings.ToUpper(Default)

📄 License

MIT License - See LICENSE for details.


Optimizations:

  • Automatic output directory creation
  • Preserves original file structure
  • Maintains CSV header order
  • Parallel processing ready (future enhancement)

Note: For detailed logging, set zerolog level to DEBUG in code for development purposes.