Экспорт данных таблицы БД Ms Sql в *.csv

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
ViTYAi2007
Сообщения: 1
Зарегистрирован: 16 июн 2009, 06:47

Народ, приветствую всех!!!

Опишу мою ситуацию:
В БД информация добавляется каждые 30 минут. Добавляемые данные имеют метку "Дата и время измерения параметра" и метку "Дата и время размещения данных в БД" (если это как-то может помочь).
Необходимо каждые полчаса (то есть как данные будут помещены в БД) экспортровать определённые поля таблицы в csv-файл и дать имя этому файлу по шаблону "YYYYMMDD_HHMMSS".
В csv-файле данные должны быть размещены через запятую.

Подскажите, как тут поступить, пожалуйста?
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

В принципе ничего сложного.
Элементарный запрос к таблице, типа 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 в Дельфи - тогда ещё проще.
Чтобы дёргать только фрагмент данных, а по времени точно не привязаться, то если есть возможность добавить колонку в таблицу - добавьте флаг "выгружено". В запросе выбирайте те что "нет" и после выгрузке устанавливайте в "да"
Изображение
Ответить