2016-05-23 6 views
0

National Weather Service's Climate Prediction Center содержит данные о последних погодных данных из примерно 1400 метеорологических станций по всей территории Соединенных Штатов. Данные за предыдущий день всегда можно найти по следующему адресу:Запрос файла .txt на веб-сервере

http://www.cpc.ncep.noaa.gov/products/analysis_monitoring/cdus/prcp_temp_tables/dly_glob1.txt

В амбициозной попытке сохранить данные о погоде на будущее, я хочу, чтобы хранить эти данные построчно с помощью SQL Server 2012. Пять лет назад был задан аналогичный вопрос, и this answer упомянул команду BULK INSERT. У меня нет доступа к этому варианту.

Есть ли опция, которая позволяет напрямую импортировать текстовый файл, размещенный в Интернете, который не использует инструкцию BULK? Я не хочу сохранять файл, поскольку планирую автоматизировать этот процесс и ежедневно его запускать непосредственно на сервер.

Обновление: Я нашел еще один вариант в Ad Hoc Distributed Queries. Этот вариант также недоступен для меня в зависимости от характера данных баз данных.

+1

Что мешает вам сохранить его во временное место, выполняя массовую загрузку, а затем удаляя его? Является ли это самоналоженным ограничением или есть некоторые законные архитектурные препятствия? – dazedandconfused

+0

Это в два раза. Я пытался сохранить всю обработку, содержащуюся в запросах/подзапросах, и у меня нет доступа к команде «BULK», даже с локальными .txt-файлами. – Fritz

+1

Считаете ли вы использование [SSIS] (https://msdn.microsoft.com/en-GB/library/ms141026.aspx) в сочетании с [заданием агента SQL] (https://msdn.microsoft.com/en -GB/библиотека/ms190268.aspx)? –

ответ

1

Почему у вас нет доступа к массовой вставке? Я не могу думать о причине, которая была бы отключена в вашей версии SQL Server.

Я могу придумать пару способов выполнения работы.

# 1) Запишите макрос, используя excel, чтобы сделать все от импорта данных, разбора наборов данных, а затем сохранить в виде CSV-файла. Я только что это сделал; очень просто. Затем используйте BULK INSERT для получения данных из CSV на SQL Server.

# 2) Запишите макрос, используя excel, чтобы сделать все, от импорта данных, до разбора наборов данных. Затем используйте сценарий VBA для отправки данных на SQL Server. Вы найдете несколько идей из приведенной ниже ссылки.

http://www.excel-sql-server.com/excel-sql-server-import-export-using-vba.htm#Excel%20Data%20Export%20to%20SQL%20Server%20using%20ADO

# 3) Вы можете на самом деле использовать Python или R для получения данных из Интернета. Оба имеют отличные пакеты парсинга HTML. Затем, как указано в пункте № 1 выше, сохраните данные в виде CSV (используя Python или R) и BULK INSERT в SQL Server.

R, вероятно, немного не в тему, но все же жизнеспособный вариант. Я просто сделал это, чтобы проверить свою идею, и все делается только в двух строках кода! Насколько это эффективно!

X <- read.csv(url("http://www.cpc.ncep.noaa.gov/products/analysis_monitoring/cdus/prcp_temp_tables/dly_glob1.txt")) 
write.csv(X, file = "C:\\Users\\rshuell001\\Desktop\\foo.csv") 
+0

Отсутствие 'BULK' - ограничение на основе разрешений на сервер. Если бы я передал вопрос кому-то с большим количеством разрешений, то, вероятно, это был бы использованный метод. При этом все три являются хорошими вариантами, но # 2 действительно выделяется как потенциальный ответ на заданный вопрос. По-прежнему существует проблема автоматизации Excel для открытия и запуска кода VBA, но это возможно. – Fritz

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