From datatool documentation (page 45) :
\begin{table}[htbp]
\caption{First Three Rows}
\centering
\begin{tabular}{llr}
\bfseries First Name & \bfseries Surname & \bfseries Score (\%)%
\DTLforeach*{scores}%
{\firstname=FirstName,\surname=Surname,\score=Score}{%
\ifthenelse{\DTLcurrentindex=3}{\dtlbreak}{}%
\\\firstname & \surname & \score
}%
\end{tabular}
\end{table}
Alternatively,
\DTLforeach{scores}%
{\firstname=FirstName,\surname=Surname,\score=Score}{%
\\\firstname & \surname & \score
\ifthenelse{\value{DTLrowi}=3}{\dtlbreak}{}%
}%
Hence you can control the number of rows to be printed (here 3 rows).
MWE for your database follows:
\documentclass[12pt]{article}
%\usepackage[charter]{mathdesign}
%\usepackage[a4paper,left=1in,right=1in,top=1in,bottom=1in]{geometry}
\usepackage{datatool}
\DTLloaddb{animals}{dbase.csv}
%==================================================================
\begin{document}
%
We print only the first three rows from your database that has four rows.
The first approach follows.
\begin{table}[htbp]
\caption{First three Rows}\label{tab:20rows}
\centering
\begin{tabular}{lllll}
\DTLforeach*{animals}%
{\animal=animal,\one=one,\two=two,\three=three,\four=four}{%
\ifthenelse{\DTLcurrentindex=3}{\dtlbreak}{}%
\\\animal & \one & \two & \three & \four
}%
\end{tabular}
\end{table}
%
Now the second approach:
\begin{table}[htbp]
\caption{First three Rows}\label{tab:20rows}
\centering
\begin{tabular}{lllll}\hline
\DTLforeach*{animals}%
{\animal=animal,\one=one,\two=two,\three=three,\four=four}{%
\animal & \one & \two & \three & \four \\\hline
\ifthenelse{\value{DTLrowi}=3}{\dtlbreak}{}%
}%
\end{tabular}
\end{table}
You can decide how many lines will fit in a page and change the number of rows accordingly.
\end{document}
