答案 0 :(得分:6)
迟到的答案但对线程访问者有用:
如果你想使用T-SQL命令 - 那很好,但是根据你的需要采用代码可能非常耗时。我建议使用一些第三方工具来实现此目的,其中大多数都有一个功能齐全的免费试用版(如ApexSQL或Redgate中的SQL测试数据生成器)。
这些工具可以帮助您节省大量时间,因为它们可以在几次点击中创建大量数据。
答案 1 :(得分:1)
这应该让你开始:
CREATE TABLE NumberTable
(
number INT
);
;WITH Numbers(number) AS
(SELECT 1 AS number
UNION ALL
SELECT number + 1 FROM Numbers WHERE number < 100
)
INSERT INTO NumberTable (number)
SELECT N1.number + ((N2.number - 1) * 100)
FROM Numbers N1, Numbers N2 OPTION(MAXRECURSION 100);
CREATE TABLE MyData
(
id INT IDENTITY PRIMARY KEY,
longitude DECIMAL(7, 4),
latitude DECIMAL(6, 4),
location GEOGRAPHY
);
INSERT INTO MyData (longitude, latitude)
SELECT CAST(NEWID() AS BINARY(8)) % 1800000 * 0.0001,
CAST(NEWID() AS BINARY(8)) % 900000 * 0.0001 FROM NumberTable WHERE number < 101;
UPDATE MyData
SET location =
geography::STPointFromText(
CONCAT('POINT (',
CONVERT(VARCHAR(20), longitude),
' ',
CONVERT(VARCHAR(20), latitude),
')'),
4326)
WHERE location IS NULL;
SELECT
id
, longitude
, latitude
, location.STAsText() locationAsText
FROM MyData;
当心“100”和“101”目前限制生成的记录数。
如果您认为合适,请发表评论或扩展您的问题。