Привет!
Код:
#!/bin/bash
# Проверяем, передан ли аргумент
if [ $# -ne 1 ]; then
echo "Использование: $0 <файл.drn>"
exit 1
fi
input_file="$1"
# Проверяем, существует ли файл
if [ ! -f "$input_file" ]; then
echo "Ошибка: файл $input_file не найден."
exit 1
fi
# Проверяем, является ли файл SQLite базой данных
if ! file "$input_file" | grep -q "SQLite"; then
echo "Предупреждение: файл $input_file может не быть SQLite базой данных (file utility не обнаружил SQLite)."
echo "Продолжение работы..."
fi
# Имя выходного файла
output_file="${input_file%.drn}.json"
# Извлекаем все таблицы
tables=$(sqlite3 "$input_file" ".tables")
# Начинаем формировать JSON объект
echo "{" > "$output_file"
# Проходим по каждой таблице
first_table=true
for table in $tables; do
# Получаем данные таблицы в JSON формате
table_data=$(sqlite3 -json "$input_file" "SELECT * FROM $table;")
# Если sqlite3 -json вернул пустую строку (а не []), заменяем на [{}]
if [ -z "$table_data" ]; then
table_data="[{}]"
fi
# Если данные пустые (например, []), заменяем на [{}]
if [ "$table_data" = "[]" ]; then
table_data="[{}]"
fi
# Добавляем запятую перед следующей таблицей, если это не первая
if [ "$first_table" = false ]; then
echo "," >> "$output_file"
fi
# Добавляем имя таблицы и её данные в JSON
printf '"%s": %s' "$table" "$table_data" >> "$output_file"
first_table=false
done
# Закрываем JSON объект
echo "}" >> "$output_file"
echo "Файл $input_file успешно преобразован в $output_file"