Моя команда создает инструмент для обработки больших объемов данных. Идея состоит в том, чтобы взять пакетный файл из 30000 строк и массово загрузить его в таблицу, а затем обработать записи, используя параллельную обработку.
Часть, на которой я застрял, - это создание динамических таблиц. Мы хотим создать новую физическую таблицу для каждого файла, который мы получаем. Таблицы будут удалены из нашей системы отдельным процессом после их завершения.
Часть, на которой я застрял, - это создание динамических таблиц. Для каждого пакетного файла, который мы получаем, мне нужно создать новый физический файл с уникальным именем таблицы.
У меня есть базовая структура для таблицы, и я намерен создать уникальные имена таблиц, используя комбинацию метки даты / времени и guid (черты, преобразованные в символы подчеркивания).
Я мог бы сделать это достаточно легко в хранимой процедуре, но мне интересно, есть ли лучший способ.
Вот что я рассмотрел ...
Шаблоны в SQL Server Management Studio. Это инструмент с графическим интерфейсом, встроенный в Management Studio (из Management Studio Ctrl + Alt + T), который позволяет определять различные объекты sql, включая таблицу, и задавать параметры. Кажется, что это будет работать, однако, похоже, что это инструмент с графическим интерфейсом, а не то, что я мог бы вызвать из хранимой процедуры.
Хранимая процедура. Я мог бы поместить все в хранимую процедуру и встроить имя моего файла и схему в строку nvarchar (max) и использовать sp_executesql для создания таблицы. Это может быть способ достижения моей цели, но мне интересно, есть ли лучший способ.
Хранимая процедура с существующей таблицей в качестве шаблона. Я мог бы определить базовую таблицу и затем запросить sys.columns & sys.dataypes, чтобы создать строку, представляющую новую таблицу. Это позволило бы мне добавлять столбцы в базовую таблицу без необходимости обновления хранимой процедуры. Я не уверен, что это лучший подход.
Мне интересно, решали ли какие-нибудь люди с переполнением стека подобные требования. Каковы ваши рекомендации.