2016-11-23 3 views
1

Каждые 10 минут я получаю файл .csv от внешнего партнера, который мне нужно вставить в базу данных SQL. Цель состоит в том, что I впоследствии может сделать отчет, который показывает график с температурой в течение интервала даты, где я могу видеть, как температура была в течение дня, когда ось x равна времени, а у-оси - температура.Как изменить данные во время массовой вставки из CSV-файлов

Файл содержит:

UUID
Дата
Время
Температура

Формат даты: гггг-мм-дд и формат времени чч: мм: сс.

Как я могу контактировать дату и время, когда массовая вставка?

Также температура дегрессивна, но поставляется в формате без точки. Например, 271, где должно быть 27.1

Могу ли я также изменить это во время объемной вставки?

BULK 
INSERT [dbo].[temp] 
FROM 'c:\input.csv' 
WITH 
(
FIRSTROW = 2, 
CODEPAGE = 'ACP', 
FIELDTERMINATOR = ';', 
ROWTERMINATOR = '\n' 
) 
GO 

Или я могу просто вставить данные, как есть, и визуально «изменить» его при выполнении отчета?

+1

Нужно ли конкатенировать на этапе вставки? Вы можете просто форматировать, когда вы действительно извлекаете данные. –

+0

Я согласен с Ричем. Если вы беспокоитесь о влиянии на производительность чтения, рассмотрите возможность использования вычисляемых столбцов с включенной сохранностью. – mohdowais

+0

Нет, мне не нужно конкатенировать на этапе вставки и изменять температуру. Я просто подумал, что это будет проще, чем делать это в «слое отчета». Я новичок в отчетности. – mgr33n

ответ

0

Сначала импортируйте данные в таблицу базы данных, затем измените данные в соответствии с требованиями.

для конкатенации использования:

CAST(datecolumn as DATETIME) + CAST(timecolumn AS TIME) 

для преобразования температуры:

1.

Select Stuff(temperaturecolumn , Len(temperaturecolumn), 0, '.') 
    From yourTable 

Или

2.

select cast( cast(temperaturecolumn as decimal) /10 as decimal(4,2)) 
+0

Спасибо, он очень хорошо работает на моем тестовом столе. – mgr33n

+0

больше всего приветствуется bro. –

Смежные вопросы