This repository has been archived by the owner on Jul 2, 2020. It is now read-only.
/
DataExtractorMain.java
51 lines (40 loc) · 2.02 KB
/
DataExtractorMain.java
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package fr.soat.icoundoul.dbunit.extractor;
import java.io.FileOutputStream;
import java.sql.DriverManager;
import org.dbunit.database.DatabaseConfig;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.database.QueryDataSet;
import org.dbunit.database.search.TablesDependencyHelper;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.ext.mysql.MySqlMetadataHandler;
/**
*
* @author icoundoul
* @category Service d'extrtation de données depuis une base de données
*/
public class DataExtractorMain {
public static void main(String[] args) throws Exception {
// connection à la base source (baseX)
Class.forName("com.mysql.jdbc.Driver");
String schema = "basex"; // schéma de la base source
java.sql.Connection jdbcConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/basex", "root", "");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection, schema);
// On précise qu'on utilise Mysql
connection.getConfig().setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, new MySqlMetadataHandler());
// Export de données partielles de la base de données
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("CLIENT", "SELECT * FROM t_client WHERE ID='200'");
FlatXmlDataSet.write(partialDataSet, new FileOutputStream("partial_data.xml"));
// Export de toute la base
IDataSet fullDataSet = connection.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full_data.xml"));
// Export des tables dépendantes: export de la table T et de toutes les tables
// ayant une clé primaire qui est une étrangère sur la table T
String[] depTableNames = TablesDependencyHelper.getAllDependentTables(connection, "t_client");
IDataSet depDataSet = connection.createDataSet(depTableNames);
FlatXmlDataSet.write(depDataSet, new FileOutputStream("dependents.xml"));
System.out.println("Fichiers dataSet générés avec succès");
}
}