How to avoid primary key violation while doing inserts
use not exists

declare @batchSize int = 1000
INSERT INTO [dbo].[Destinationtable]
   ([PacketId]
   ,[DeviceId]
   ,[PacketDate]
   ,[PacketNumber]
   ,[Processed]
   ,[CreateDate]
   ,[NewReadingId])
SELECT top (@batchSize)
   [PacketId]
  ,[DeviceId]
  ,[PacketDate]
  ,[PacketNumber]
  ,[Processed]
  ,[CreateDate]
  ,newid()
FROM [dbo].[SourceTable]
where Processed is null  
  and not exists (select 1 from [Destinationtable] 
                  where [PacketId] = [SourceTable].[PacketId])
order by CreateDate