我试图使用bcp (批量复制工具)将CSV文件中的地理数据导入到SQL server中,但我找不到格式。我想在CSV文件中使用类似这样的内容,但在POINT列中出现错误:
101932694,POINT(44.0586891174316 -69.2067337036133 4326),2014-07-30,24452353如何格式化CSV文件中的地理数据,以便bcp可以接受它?
发布于 2016-09-17 03:22:58
好吧,它找不到使用bcp导入人类可读地理数据的任何信息,所以我转换点数据:
点(44.058689117431641 -69.206733703613281 4326),...
对于二进制形式:
E6100000010D000000203B4D51C000000020830746400000000000E6B040,...
并将二进制形式放入我的CSV文件中。bcp似乎可以很好地处理这一点。
发布于 2016-09-16 22:06:52
我对BCP一无所知,但希望这篇文章能满足你的需要。
尝试将数据作为字符串导入到临时表中,然后使用更新将其导入到实际表中。
在SQL Server中,空间数据以varbinary形式存储,即您的点将存储为
0xE6100000010C010000203B4D51C0FAFFFF1F83074640如果您尝试使用SSIS移动数据,它实际上会将其视为varbinary,而不是空间。因此,需要进行转换才能将字符串转换为正确的格式。
SELECT GEOGRAPHY::STGeomFromText('POINT(44.0586891174316 -69.2067337036133)', 4326)
or
SELECT GEOGRAPHY::Point(-69.2067337036133,44.0586891174316,4326)由于这些原因,我猜BCP不能隐式识别转换,您可能需要手动完成。
CSV =>临时表=>
INSERT INTO RealTable (GeogColumn) SELECT GEOGRAPHY::STGeomFromText(GeogString,4326) FROM TempTablehttps://stackoverflow.com/questions/39533248
复制相似问题