Export d'une BDD vers le format CSV
Salut, je souhaite exporter une base de données, contenant un grand nombre de résultats (millions) vers le format CSV et je rencontre des problèmes. Je débute en c#.
Le script suivant rencontre des problèmes, le connecteur odbc plante à partir d'un trop grand nombre de résultats. Je ne sais pas si un simple count en sql est gourmand, mais ça suffit pour faire planter le connecteur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public void exportDatabaseToCSV()
{
int iBrowseTable = 0;
int iBrowseColumn = 0;
string sTableName;
using (StreamWriter streamWriter = new StreamWriter(@"C:\export.csv"))
{
DataTable aListTable = this.getTables();
foreach (DataRow dr in aListTable.Rows) /*** Parcours des tables ***/
{
sTableName = dr[2].ToString();
// Affichage de la table
streamWriter.Write(sTableName + ";" + dr[4].ToString() + "\n;");
OdbcDataReader aListResult = this.getResults("SELECT COUNT(*) FROM " + sTableName);
// Affichage des noms des colonnes
while (iBrowseTable < aListResult.FieldCount)
streamWriter.Write(aListResult.GetName(iBrowseTable++) + ";");
streamWriter.Write("\n;");
// Affichage des résultats
while (aListResult.Read())
{
while (iBrowseColumn < aListResult.FieldCount)
streamWriter.Write(aListResult[iBrowseColumn++] + ";");
iBrowseColumn = 0;
streamWriter.Write("\n;");
}
}
}
} |
Si vous savez ce que je peux faire pour alléger, je suis preneur !
Merci