data/*.dat is expanded by GNU bash running inside the container.
data/*.dat is expanded by whatever shell you have running outside the container; Docker directly runs /bin/cp without invoking a shell, so nothing inside the container can expand the wildcard.
How did they get to that directory in the first place?
If you built the image from a Dockerfile, change the place you COPY or RUN cp or RUN tar xzf them, rebuild the image, and restart the container.
If you’re trying to use docker exec to copy content from your host system into a container, I’d strongly suggest one of two paths. Either use docker build to build an image with the data files you need, or use docker run -v to make the content you need appear at the right place in the container filesystem, without manually copying it. If you started the container already with the wrong docker run -v option, stop, destroy, and recreate the container with the correct one.
If you really have no other choice than to use docker exec here, you can make Docker run the shell
docker exec 0123456789 sh -c 'cp /home/data/*.dat /home'
but any changes you make will be lost when you destroy the container.