Convert Datastore to Ordered DataStore

Hello! Well I do not believe there is a direct way to transfer it to an OrderedDataStore, and there is no way to save a table to an OrderedDataStore, you can still utilize your table to essentially get the same functionality. If you want to grab the data assigned to a specific entry you are aware of in a table you can use the tables name followed by the position of the data in brackets.

local Highscore = tableToSave[4] -- Retrieving the 4th index from the table
print(Highscore)

Likewise you can also assign names to these entries as well and refrence them the same way. This will make your table a dictionary.

	local tableToSave = {
		Gold = player.leaderstats.GoldCoins.Value; -- First value from the table
		Bought = player.BoughtFiveHourBook.Value; -- Second value from the table
		Boost = player.FiveHourBookBoostLeft.Value;
		Highscore = player.leaderstats.Highscore.Value,
		Experience = player.Experience.Value;
	}

local Highscore = tableToSave["Highscore"] -- Retrieving the Highscore index from the table
print(Highscore)

You can also keep track of players stats on the server by creating a new table that retrieves each players saved leaderstat on join. Then sort the new dictionary to get a new organized dictionary.

local Player = game:GetService("Players")

local TempLeaderboard= { } -- Dictionary of players and their stat you want sorted

local function sortLeaderboard(dictionary) -- This function will pass a dictionary through it and return a new sorted dictionary.
	local array = {}
	for username, value in pairs(dictionary) do
		array[#array+1] = {username = username, value = value}
	end
	table.sort(array, function(a, b)
		return a.value > b.value
	end)
	
	return array
end
-- This function can also be called anytime in the script when you want to refresh and resort the leaderboard (if using in more than one script, put it in a module script). 
-- The function will give you a dictionary sorted in the following fashion. 

                --  [1] =  ▼  {
                     -- ["username"] = "OurAuthority",
                     -- ["value"] = 8
-- So you can easily grab the information you need to be displayed on a leaderboard.

local PlayerLeaderboard = {}
Player.PlayerAdded:Connect(function(Player)
	TempLeaderboard[Player.Name] = player.leaderstats.Highscore.Value -- Will add player to the server dictionary on join
	
	PlayerLeaderboard = sortLeaderboard(TempLeaderboard) -- The new sorted dictionary
	
	print(PlayerLeaderboard)
end)

-- Here you'll want to do your manual refresh whether that be whenever a players stat changes, or a set time. Just make sure to set PlayerLeaderboard = sortLeaderboard(TempLeaderboard)

Player.PlayerRemoving:Connect(function(Player)
    TempLeaderboard[Player.Name] = nil -- Removing the character from the leaderboard when they leave
    PlayerLeaderboard = sortLeaderboard(TempLeaderboard) -- Resort the leaderboard
end)

Used the sorting code from this post.

Finally, this is working in my testing and I am quite a new developer. However I do believe you should be able to work this into what you are trying to achieve.