Я пытаюсь написать код для моего клиента, который он сможет использовать в будущем без моей помощи. Они установят SQLServer Express на один из своих рабочих столов (как я использовал), чтобы назначенное лицо могло ежедневно выполнять предварительно написанные запросы к локально хранимым данным для получения конкретной информации, которая им необходима. Я не хочу разбираться в том, почему мы используем SQL Server Express и таким образом управляем нашими данными, но верю, что мы рассмотрели альтернативы, и это наиболее выполнимый вариант.
Я хотел бы сделать выполнение запроса на импорт максимально простым для них, так как они не знакомы с SQL или кодированием в целом. На высоком уровне у меня есть около 15 файлов с разделителями табуляции, автоматически загружаемых в папку на моем локальном диске каждый день с непротиворечивым именем файла, за исключением предварительного исправления, которое является датой загрузки файла. Например, 20180912-xxx, 20180912-гггг и т. Д. Для всех файлов, загруженных 12 сентября.
Я запускаю массовый импорт, который создает базу данных на 12 сентября («sep12»), а затем загружает таблицы в базу данных; затем я использую переменную @date в операторах импорта для определения местоположения файла. Например:
CREATE DATABASE aug29
USE aug29
DECLARE @date VARCHAR(15)
SET @date = '20180829'
@import = 'BULK INSERT dbo.Table FROM ''\\Drive\Documents\' + @Date + '-xxx.txt''
WITH (FIRSTROW = 2, FIELDTERMINATOR = ''\t'', ROWTERMINATOR = ''\n'')'
EXEC(@import)
Как видите, для 1-й, 2-й и 4-й строк необходимо ручное редактирование. Я упростил код, чтобы потребовать только 1 ручное редактирование, определив 1 переменную в качестве даты (например, @dateinput = '9/12/2018'), а затем другие переменные определяют себя соответствующим образом (например, @DBName = ' sep12 ', @FilePrefix =' 20180912 'и т. д.).
Мой вопрос такой:
Могу ли я предложить пользователю ввести эту дату перед запуском кода? Что-то вроде
Нажмите Выполнить> появится сообщение с подсказкой > Пользователь вводит дату> нажмите ОК> код запускается с введенным значением, сохраненным как переменная