我正在使用以下查询。
但是,它只是传输前1000行,就是这样。即使我有更多的行。
如果我删除protected[services] def computeMigrationHash(toVersion: Int): String = {
val migrationClassName = MigrationClassNameFormat.format(toVersion, toVersion)
val migrationClass = Class.forName(migrationClassName)
val fileName = migrationClass.getName.replace('.', '/') + ".class"
val resource = getClass.getClassLoader.getResource(fileName)
logger.debug("Migration file - " + resource.getFile)
val file = new File(resource.getFile)
val hc = Files.hash(file, Hashing.md5())
logger.debug("Calculated migration file hash - " + hc.toString)
hc.toString
}
子句,我会获得完整数据。你能告诉我哪里错了吗?
where not exists
为什么只插入前1000行?
答案 0 :(得分:0)
WHERE NOT EXISTS (
SELECT 1 FROM Table1
)
仅对第一批插入评估为true。之后,目标表中有记录,WHERE子句的计算结果为false,因此不会再进行插入。
答案 1 :(得分:0)
Table2中有多少行?你的第二个循环将产生(1 < (TableCount / 1001)
的WHILE条件,如果你的表计数超过1001行,它将在第一个循环后跳出。
答案 2 :(得分:0)
DECLARE @BatchSize INT = 1000
DECLARE @Counter INT = 0
--DECLARE @TableCount INT = 0
--set @TableCount = (select count(*) from Table2)
declare @rows int = 1
while @rows>0--@Counter < (@TableCount/@BatchSize+1)
BEGIN
INSERT INTO Table1
SELECT * FROM Table2 MH
inner join Table3 M
on MH.Mid = M.Mid
--if you want non-existing
left join table1 t on t.field = M.field
where t.field is null
-- end if you want
--WHERE NOT EXISTS ( --not exists WHAT?
-- SELECT 1 FROM Table1
--)
order by id OFFSET (@BatchSize * @Counter) ROWS FETCH NEXT @Batchsize ROWS ONLY;
--SET @Counter=@Counter+1
select @rows = @@rowcount, @counter = @counter + 1
END