Народ, приветствую всех!!!
Опишу мою ситуацию:
В БД информация добавляется каждые 30 минут. Добавляемые данные имеют метку "Дата и время измерения параметра" и метку "Дата и время размещения данных в БД" (если это как-то может помочь).
Необходимо каждые полчаса (то есть как данные будут помещены в БД) экспортровать определённые поля таблицы в csv-файл и дать имя этому файлу по шаблону "YYYYMMDD_HHMMSS".
В csv-файле данные должны быть размещены через запятую.
Подскажите, как тут поступить, пожалуйста?
Экспорт данных таблицы БД Ms Sql в *.csv
В принципе ничего сложного.
Элементарный запрос к таблице, типа SELECT <список полей> FROM <имя таблицы> WHERE <условие выбора>.
Можно добавить в запрос условие фильтрации записей по времени добавления, если нужно не целиком всю таблицу сохранять.
Дальше полученый набор записей циклом сохранить в текстовый файл.
Каждая строка - это запись из таблицы.
Элементарный запрос к таблице, типа SELECT <список полей> FROM <имя таблицы> WHERE <условие выбора>.
Можно добавить в запрос условие фильтрации записей по времени добавления, если нужно не целиком всю таблицу сохранять.
Дальше полученый набор записей циклом сохранить в текстовый файл.
Каждая строка - это запись из таблицы.
Поумнеть несложно, куда труднее от дури избавиться.
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
ViTYAi2007, вам же на sql.ru давали советы 
как я понимаю вам интересна именно автоматизация процесса и для этого надо:
1) автоматически выполнять запрос в определённое время
2) автоматом генерить имя выходного файла
по п.1) используется либо виндовый шедулер, либо (как вам подсказывали) SQLAgent
по п.2) таки мне видится что придётся написать хранимую процедуру.
вначале сделайте запрос на текущее дату/время типа
[syntax='Interbase sql'] select cast('now' as timestamp) from самая_маленькая_таблица into :CurDateTime
[/syntax]
в MSSQL конструкция наверняка отличается. И скорее всего есть какая-нибудь сессионная переменная типа "current_timestamp". Далее результат из переменной надо разобрать на куски и собрать нужного вида строку. Опять же может есть встроенная функция типа Format в Дельфи - тогда ещё проще.
Чтобы дёргать только фрагмент данных, а по времени точно не привязаться, то если есть возможность добавить колонку в таблицу - добавьте флаг "выгружено". В запросе выбирайте те что "нет" и после выгрузке устанавливайте в "да"

как я понимаю вам интересна именно автоматизация процесса и для этого надо:
1) автоматически выполнять запрос в определённое время
2) автоматом генерить имя выходного файла
по п.1) используется либо виндовый шедулер, либо (как вам подсказывали) SQLAgent
по п.2) таки мне видится что придётся написать хранимую процедуру.
вначале сделайте запрос на текущее дату/время типа
[syntax='Interbase sql'] select cast('now' as timestamp) from самая_маленькая_таблица into :CurDateTime
[/syntax]
в MSSQL конструкция наверняка отличается. И скорее всего есть какая-нибудь сессионная переменная типа "current_timestamp". Далее результат из переменной надо разобрать на куски и собрать нужного вида строку. Опять же может есть встроенная функция типа Format в Дельфи - тогда ещё проще.
Чтобы дёргать только фрагмент данных, а по времени точно не привязаться, то если есть возможность добавить колонку в таблицу - добавьте флаг "выгружено". В запросе выбирайте те что "нет" и после выгрузке устанавливайте в "да"
