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"; ?>