If your dataset is too large to fit into memory at once, you can preprocess one channel at a time With ft_preprocessing, immediately combined with ft_resampledata. After gathering all downsampled channels, you can combine them again into a normal multi-channel data structure.

In summary, the code would look like this

for i=1:nchans
  cfgp         = [];
  cfgp.dataset = 'yourfile.dat';
  % instead of specifying channel names, you are allowed to use channel numbers
  cfgp.channel = i;
  datp         = ft_preprocessing(cfgp);
  
  cfgr            = [];
  cfgr.resamplefs = 250; 
  datr{i}         = ft_resampledata(cfgr, datp);
  
  clear datp
end

cfg = [];
datall = ft_appenddata(cfg, datr{:}); % this expands all cells into input variables