This is what I'm using to save, which appears to work pretty quickly & doesn't respond with any kind of error

local OwnData = DataStoreService:GetDataStore(Player.UserId.."-".."OCChar") or {}
	
	local Table =  {	
			Data1aa = CPrim.r;
			Data1ab = CPrim.g;
			Data1ac = CPrim.b;
			Data1ba = CSec.r;
			Data1bb = CSec.g;
			Data1bc = CSec.b;
			Data1ca = CTert.r;
			Data1cb = CTert.g;
			Data1cc = CTert.b;
			Data1da = CQuat.r;
			Data1db = CQuat.g;
			Data1dc = CQuat.b;
			Data1ea = CEye.r;
			Data1eb = CEye.g;
			Data1ec = CEye.b;
			Data1fa = CHair.r;
			Data1fb = CHair.g;
			Data1fc = CHair.b;
			Data1ga = CKi.r;
			Data1gb = CKi.g;
			Data1gc = CKi.b;
			Data1ha = CSkin.r;
			Data1hb = CSkin.g;
			Data1hc = CSkin.b;
			Data2a = Face;
			Data2b = Torso;
			Data2c = LArm;
			Data2d = LLeg;
			Data2e = RArm;
			Data2f = RLeg;
			Data2g = Hair;
			Data3a = Attack1;
			Data3b = Attack2;
			Data3c = Attack3;
			Data3d = Attack4;
			Data3e = Attack5;
			Data3f = Attack6;
			Data3g = Attack7;
			Data3h = Attack8;
			Data3i = Attack9;
			Data3j = Attack10;
			Data3k = Attack11;
			Data3l = Attack12;
			Data3m = Attack13;
			Data3n = Attack14;
			Data3o = Attack15;
			Data3p = Attack16;
			Data3q = Attack17;
			Data3r = Attack18;
			Data4a = Form1;
			Data4b = Form2;
			Data4c = Form3;
			Data4d = Form4;
			Data4e = Form5;
			Data4f = Form6;
			Data5a = FormH1;
			Data5b = FormH2;
			Data5c = FormH3;
			Data5d = FormH4;
			Data5e = FormH5;
			Data5f = FormH6;
		}
	
	local success,errormessage =  pcall(function()	
		script.Parent.Parent.Visible = false
           OwnData:SetAsync(Player.UserId.."-".."OCChar", Table)

	script.Parent.Parent.Visible = true
	local Val = Instance.new("StringValue")
	Val.Parent = script.Parent.Parent
	Val.Name = "SAVED"
	end)
	
	if success then
		print("Stats saved!")
	else
		print("ERROR: Stat save unsuccessful!")
		warn(errormessage) 
	end

However when it comes to loading this & trying to get the data out, it becomes nil or the value that was already preset (i.e. for color3 0,0,0):

local OwnData = DataStoreService:GetDataStore(Player.UserId.."-".."OCChar") or {}
	
	local success,errormessage =  pcall(function()	
		script.Parent.Parent.Visible = false
		local success, dictionary = pcall(OwnData:GetAsync(Player.UserId.."-".."OCChar"))
		local A = dictionary.Data1aa
		local A2 = dictionary.Data1ab
		local A3 = dictionary.Data1ac
		local B = dictionary.Data1ba
		local B2 = dictionary.Data1bb
		local B3 = dictionary.Data1bc
		local C = dictionary.Data1ca
		local C2 = dictionary.Data1cb
		local C3 = dictionary.Data1cc
		local D = dictionary.Data1da
		local D2 = dictionary.Data1db
		local D3 = dictionary.Data1dc
		local E = dictionary.Data1ga
		local E2 = dictionary.Data1gb
		local E3 = dictionary.Data1gc
		local G = dictionary.Data2b
		local H = dictionary.Data2c
		local I = dictionary.Data2d
		local J = dictionary.Data2e
		local K = dictionary.Data2f
		local L = dictionary.Data3a
		local L2 = dictionary.Data3b
		local L3 = dictionary.Data3c
		local L4 = dictionary.Data3d
		local L5 = dictionary.Data3e
		local L6 = dictionary.Data3f
		local L7 = dictionary.Data3g
		local L8 = dictionary.Data3h
		local L9 = dictionary.Data3i
		local L10 = dictionary.Data3j
		local L11 = dictionary.Data3k
		local L12 = dictionary.Data3l
		local L13 = dictionary.Data3m
		local L14 = dictionary.Data3n
		local L15 = dictionary.Data3o
		local L16 = dictionary.Data3p
		local L17 = dictionary.Data3q
		local L18 = dictionary.Data3r
		local M = dictionary.Data4a
		local M2 = dictionary.Data4b
		local M3 = dictionary.Data4c
		local M4 = dictionary.Data4d
		local M5 = dictionary.Data4e
		local M6 = dictionary.Data4f
		local Mb = dictionary.Data5a
		local M2b = dictionary.Data5b
		local M3b = dictionary.Data5c
		local M4b = dictionary.Data5d
		local M5b = dictionary.Data5e
		local M6b = dictionary.Data5f
		local N = dictionary.Data2a
		local O = dictionary.Data1ha
		local O2 = dictionary.Data1hb
		local O3 = dictionary.Data1hc
		local Q = dictionary.Data1fa
		local Q2 = dictionary.Data1fb
		local Q3 = dictionary.Data1fc
		local R = dictionary.Data1ea
		local R2 = dictionary.Data1eb
		local R3 = dictionary.Data1ec
		local S = dictionary.Data2g
	
	--[[--------------------------------------------------------------------------------------]]
	--[[--------------------------------------------------------------------------------------]]
	--[[--------------------------------------------------------------------------------------]]
	if Player:WaitForChild("StandStuff").Colours.Primary:FindFirstChild("Value") then
	Player:WaitForChild("StandStuff").Colours.Primary:FindFirstChild("Value"):Destroy()
	local Val = Instance.new("Color3Value",Player.StandStuff.Colours.Primary)
	local num1 = A
	local num2 = A2
	local num3 = A3
	Val.Value = Color3.new(num1,num2,num3)
	Val.Name = "Value"
	else
		local Val = Instance.new("Color3Value",Player.StandStuff.Colours.Primary)
	local num1 = A
	local num2 = A2
	local num3 = A3
	Val.Value = Color3.new(num1,num2,num3)
	Val.Name = "Value"
	print(Val.Value)
	end