我有一张有180万条记录的表。我需要使用表中的列值进行计算并将其保存到另一个表中。我在C#中尝试过,但是一一插入太慢了。 BulkCopy选项对于我的项目也不是一个好的解决方案。我对SQL查询没有任何经验。
表1
Id int
x float
y float
Id x y
--------------------
1 45.55 25.15
2 65.45 35.66
3 33.25 42.49
我想使用x,y值进行计算并将其保存到Table2
xx = 175 * (180 + x)
yy = 175 * (90 - y)
表2
Id int
xx int
yy int
在我的C#代码中
int xx = (int)((175) * (180 + node.x));
int yy = (int)((175) * (90 - node.y));
然后我将其保存为foreach循环中的insert,但是它要花很多时间。
答案 0 :(得分:0)
您最好的选择是使用SQL查询,但是我可以确定您已将索引应用于table1,以便加快处理速度。
对于查询-将其放入SQL Server Management Studio中的新查询窗口中,并确保您的数据库是默认源。
INSERT INTO Table2 (xx, yy)
SELECT
CAST((175 * (180 + x)) AS INT) AS xx,
CAST((175 * (90 - y)) AS INT) AS yy
FROM
table1
请注意,因为您已经为Table2定义了表头,所以不需要xx和yy。
Cast将总和的总答案转换为整数-我发现在进行插入操作时转换为整数有时会有些粗略,因此在插入操作之前进行转换会使事情变得简单。