查询Web服务器上的.txt文件

时间:2016-05-23 15:03:22

标签: sql-server tsql sql-server-2012

National Weather Service's Climate Prediction Center维护了美国各地约1400个气象站的近期天气数据。前一天的数据总是可以在以下地址找到:

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

在雄心勃勃的尝试存储天气数据以供将来参考时,我希望使用SQL Server 2012按行存储此数据。五年前,我们提出了类似的问题,this answer提到了BULK INSERT命令。我无法访问此选项。

是否有一个选项允许直接导入不使用BULK语句的Web托管文本文件?我不打算保存文件,因为我计划自动执行此过程并让它每天直接运行到服务器。

更新:我在Ad Hoc Distributed Queries找到了另一个选项。根据相关数据库的性质,我也无法使用此选项。

1 个答案:

答案 0 :(得分: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从Web获取数据。两者都有优秀的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")