对于MSSQL 2014,我需要帮助将500万个随机行添加到表中,使用varchar(25)pk列,第二个BIGINT&第3个nvarchar(256)。我该如何编写脚本?
[所以,我想首先将值填充到主键列和BIGINT列中。每次我为此运行脚本时,在数据类型转换期间出现算术溢出错误。]
$TAIL $SQUID | gawk -v var2=$PRINCIPAL2 '{if ($7 == var2) {print $3; fflush(); system("/usr/sbin/squid -k reconfigure")}' >> $LOG
答案 0 :(得分:2)
在自动提交事务中逐行累加5,000,000行需要很长时间。
这可以通过简单地删除导致错误的部分来解决问题,并且应该更快地执行。
INSERT INTO Alok
(Col1,
Col2)
SELECT TOP (5000000) FORMAT(ROW_NUMBER() OVER (ORDER BY @@SPID), 'D25'),
ABS(CAST(CRYPT_GEN_RANDOM(8) AS BIGINT))
FROM master..spt_values v1,
master..spt_values v2
答案 1 :(得分:1)
这是第一次算术溢出:
DECLARE @Upper INT
...
SET @Upper = 9223372036854775807
如果将其更改为BIGINT,则这是第二个:
DECLARE @Random INT
...
SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
将这些更改为bigint后,插入应该开始成功