getMessage());
}
echo "База данных '" . $dbFileName . "' готова к использованию.\n\n";
// --- ОБРАБОТКА CSV-ФАЙЛОВ ---
$processedTables = [];
// Получаем список всех CSV-файлов в указанной директории
$csvFiles = glob($csvFilesDir . '*.csv');
if (empty($csvFiles)) {
die("Не найдено CSV-файлов в директории: " . $csvFilesDir . "\n");
}
foreach ($csvFiles as $csvFile) {
$tableName = basename($csvFile, '.csv'); // Имя таблицы будет именем файла без расширения
echo "Обработка файла: " . $csvFile . " -> Таблица: '" . $tableName . "'\n";
if (!file_exists($csvFile)) {
echo "Ошибка: Файл '" . $csvFile . "' не найден. Пропускаем.\n";
continue;
}
$handle = fopen($csvFile, 'r');
if ($handle === false) {
echo "Ошибка: Не удалось открыть файл '" . $csvFile . "'. Пропускаем.\n";
continue;
}
$header = fgetcsv($handle, 0, $csvSeparator, $csvEnclosure); // Читаем заголовки
if ($header === false || empty($header)) {
echo "Предупреждение: Файл '" . $csvFile . "' пуст или не содержит заголовков. Пропускаем.\n";
fclose($handle);
continue;
}
$recordCount = 0;
while (($data = fgetcsv($handle, 0, $csvSeparator, $csvEnclosure)) !== false) {
if (count($header) !== count($data)) {
echo "Предупреждение: Пропущена строка из-за несоответствия количества столбцов в файле '" . $csvFile . "'.\n";
continue;
}
// Создаем новый "bean" RedBeanPHP для текущей таблицы
$bean = R::dispense($tableName);
// Заполняем bean данными из CSV
foreach ($header as $index => $columnName) {
// Очищаем имя столбца на случай пробелов или спецсимволов
$cleanColumnName = R::genAlias($columnName);
$bean->$cleanColumnName = $data[$index];
}
// Сохраняем bean. RedBeanPHP автоматически создаст или обновит таблицу и поля.
R::store($bean);
$recordCount++;
}
fclose($handle);
$processedTables[] = $tableName;
echo "-> Импортировано " . $recordCount . " записей в таблицу '" . $tableName . "'.\n\n";
}
// --- ВЕРИФИКАЦИЯ (опционально) ---
echo "--- ВЕРИФИКАЦИЯ ДАННЫХ ---\n";
foreach ($processedTables as $tableName) {
echo "Чтение данных из таблицы '" . $tableName . "':\n";
$beans = R::findAll($tableName); // Извлекаем все записи из только что созданной таблицы
if (empty($beans)) {
echo " Нет данных в таблице.\n";
} else {
foreach ($beans as $bean) {
echo " ID: " . $bean->id . ", Данные: " . json_encode($bean->export()) . "\n";
break; // Выведем только первую запись для примера
}
}
echo "\n";
}
// --- RedBeanPHP CLEANUP ---
R::close();
echo "Импорт завершен. Соединение с БД закрыто.\n";
?>