我有一个C#的数据表,想要添加一个列以地理格式存储纬度和经度坐标,并在此之后使用bulkcopy上传到SQL Server。
为此,我应该以什么格式创建这个数据列?
我有一个C#的数据表,想要添加一个列以地理格式存储纬度和经度坐标,并在此之后使用bulkcopy上传到SQL Server。
为此,我应该以什么格式创建这个数据列?
我们必须使用位于"C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll"下的参考动态链接库(DLL):
using Microsoft.SqlServer.Types;
接下来,我们可以在datatable中创建列,在其中存储一些数据,并通过bulkcopy成功将它们发送到SQL Server。
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Geom", typeof(SqlGeometry));
DataRow newRow = datatable.NewRow();
newRow["Geom"] = SqlGeometry.Point(lat, lon, 4326);
datatable.Rows.Add(newRow);
SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connection);
sqlBulkCopy.DestinationTableName = "MySpatialDataTable";
sqlBulkCopy.WriteToServer(dataTable);
Decimal(9,6)
类似的类型,其中长度为 9
,精度为 6
。从而允许最大值可以是 180°
。Decimal(8,6)
(赤道以北或南0度至90度的最大值)Decimal(9,6)
(最大值为-180°至180°)###.######
nvarchar(25)
(它可能少于25个字符,但这样可以留出格式复制的空间)。至于确切的批量复制语句,您需要提供数据样本。