So I have a game and it saves 2 number values. You see, I was ignorant enough to not realise I should save both values into one datastore, so I saved the 2 values in separate datastores. Now, when I need to save something else, it overflows and doesn't save. So, how can I fuse the 2 datastores into 1 and save the values onto a dictionary, which saves to the new datastore. I can't just change the datastore or else everyone would lose their data. So, how can I do this?

Get Data Script

Players.PlayerAdded:Connect(function(client)
	local moneyretries = 3
	local inventoryretries = 3
	local bountyretries = 3
	local codesretries = 3
	local key = "client_" .. client.UserId
	
	repeat
		inventory = {}
		local succ, inventorytable = pcall(function()
			return player_data:GetAsync(key)
		end)
		inventory = inventorytable
		inventoryretries = inventoryretries - 1
		wait(.1)
	until moneyretries == 0 or succ
	repeat
		money = 0
		local succ, moneyvalue = pcall(function()
			return money_data:GetAsync(key)
		end)
		money = moneyvalue
		moneyretries = moneyretries - 1
		wait(.1)
	until moneyretries == 0 or succ
	
	repeat
		bounty = 0
		local succ, bountyvalue = pcall(function()
			return bounty_data:GetAsync(key)
		end)
		bounty = bountyvalue
		bountyretries = bountyretries - 1
		wait(.1)
	until bountyretries == 0 or succ
	
	repeat
		codes = {}
		local succ, codesTable = pcall(function()
			return codes_data:GetAsync(key)
		end)
		codes = codesTable
		codesretries = codesretries - 1
		wait(.1)
	until codesretries == 0 or succ
		
	local inventory_folder = Instance.new("Folder")
	inventory_folder.Name = client.Name
	inventory_folder.Parent = inventories
	
	local codes_folder = Instance.new("Folder")
	codes_folder.Name = client.Name
	codes_folder.Parent = ServerStorage.Codes
	
	client:WaitForChild("leaderstats"):WaitForChild("Money").Value = money
	client:WaitForChild("leaderstats"):WaitForChild("Bounty").Value = bounty
	
	for _, name in pairs(inventory or { }) do
		local tool = tools[name]
		tool:Clone().Parent = inventory_folder -- For saving and loading
	end
	
	for _,code in pairs(codes or { }) do
		local code = codesRep[code]
		code:Clone().Parent = codes_folder
	end
	
	inventoryretries = 3
	moneyretries = 3
	bountyretries = 3
	codesretries = 3
	
	warn("finshed loading data")
end)

Saving Data Script

Players.PlayerRemoving:Connect(function(client)
	local moneyretries = 3
	local bountyretries = 3
	local inventoryretries = 3
	local codesretries = 3
	local key = "client_" .. client.UserId
	local tools = { }
	local codes = { }
	local money
	local bounty
	local codes_folder = ServerStorage.Codes[client.Name]
	local inventory_folder = inventories[client.Name]
	
	for _, item in ipairs(inventory_folder:GetChildren()) do
		table.insert(tools, item.Name)
	end
	
	for _, code in ipairs(codes_folder:GetChildren()) do
		table.insert(codes, code.Name)
	end
	
	repeat
		local succ, inventory = pcall(function()
			player_data:UpdateAsync(key, function(prev)
				return tools
			end)
		end)
		inventoryretries = inventoryretries - 1
		wait(.1)
	until inventoryretries == 0 or succ
	
	repeat
		local succ, codes = pcall(function()
			player_data:UpdateAsync(key, function(prev)
				return codes
			end)
		end)
		codesretries = codesretries - 1
		wait(.1)
	until codesretries == 0 or succ
	
	money = client.leaderstats.Money.Value
	bounty = client.leaderstats.Bounty.Value
	
	repeat
		local succ, money = pcall(function()
			money_data:UpdateAsync(key, function(prev)
				return money
			end)
		end)
	
		moneyretries = moneyretries - 1
		wait(.1)
	until moneyretries == 0 or succ
	
	repeat
		local succ, bounty = pcall(function()
			bounty_data:UpdateAsync(key, function(prev)
				return bounty
			end)
		end)
		bountyretries = bountyretries - 1
		wait(.1)
	until bountyretries == 0 or succ
	
	inventory_folder:Destroy()
	codes_folder:Destroy()
	
	inventoryretries = 3
	moneyretries = 3
	codesretries = 3
	bountyretries = 3
	warn("datastore save finished")
end)