https://github.com/adcpd/export_impot_csv_symfony2
Méthode facile à exporter vos données de BDD via CSV et pourvoir importer d'autre par la suite ... Cette méthode fonctionne correctement. Par contre, elle n'est pas la meilleur.
https://github.com/adcpd/export_impot_csv_symfony2
Last synced: 8 months ago
JSON representation
Méthode facile à exporter vos données de BDD via CSV et pourvoir importer d'autre par la suite ... Cette méthode fonctionne correctement. Par contre, elle n'est pas la meilleur.
- Host: GitHub
- URL: https://github.com/adcpd/export_impot_csv_symfony2
- Owner: ADCPD
- Created: 2016-08-05T09:36:14.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-08-05T09:49:29.000Z (over 9 years ago)
- Last Synced: 2025-01-10T18:17:11.064Z (about 1 year ago)
- Language: JavaScript
- Size: 62.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Export_Impot_Csv_Symfony2
Méthode facile à exporter vos données de BDD via CSV et pourvoir importer d'autre par la suite ... Cette méthode fonctionne correctement. Par contre, elle n'est pas la meilleur.
#Export DBB to CSV en Symfony2
Dans le controleur de le controleur de l'unitée en question, on ajoutera la methode :
public function generateCsvAction()
{
$Equipe_manager = $this->container->get('equipe.manager.equipe_manager');
$export_manager = $this->container->get('administration_csv.manager.export_manager');
/** Se connecter à la base de données */
$conn = $this->get('database_connection');
/** donner un nom au fichier */
$filename = $export_manager->getNameCsvFile("equipe");
/** retour de requette en SQL*/
$requette = $Equipe_manager->getSqlEquipes();
$stmt = $conn->prepare($requette);
$stmt->execute();
$response = new StreamedResponse();
$response->setStatusCode(200);
$response->headers->set('Content-Type', 'text/csv');
$response->headers->set('Content-Disposition', 'attachment; filename=' . $filename);
$response->setCallback(function () use ($stmt) {
$config = new ExporterConfig();
$exporter = new Exporter($config);
$exporter->export('php://output', new PdoCollection($stmt->getIterator()));
});
$response->send();
return $response;
}
Dans le routing :
csv_upload:
path: /equipe/equipes_csv
defaults: { _controller: EquipeBundle:Equipes:generateCsv }
#Import CSV to BDD en Symfony2
Dans le cas de l'import, j'ai crée une command qui me permet d'uploader le contenu d'une fichier csv stoquer dans web/uploads/import/equipe/
La command :
class importDataCommand extends ContainerAwareCommand
{
/**
* {@inheritdoc}
*/
protected function configure()
{
$this
->setName('equipe:import:data')
->setDescription('Commande qui permet de charger un contenu externe dans l\'entitée EQUIPE via un fichier CSV.');
}
/**
* {@inheritdoc}
* @param InputInterface $input
* @param OutputInterface $output
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$now = new \DateTime();
/** Afficher le moment du lancement du processus */
$output->writeln('Start: ' . $now->format('d-m-Y G:i:s') . ' ---');
/** Import CSV on DB via Doctrine ORM */
$this->import($input, $output);
/** Afficher la date de fin du proccess */
$now = new \DateTime();
$output->writeln('End : ' . $now->format('d-m-Y G:i:s') . ' ---');
}
/**
* @param InputInterface $input
* @param OutputInterface $output
*/
protected function import(InputInterface $input, OutputInterface $output)
{
/** recuperer le csv en format array */
$data = $this->get($input, $output);
/** Doctrine Manager */
$em = $this->getContainer()->get('doctrine')->getManager();
/** turning off doctrine pour obtimser la memoire lors du chargement */
$em->getConnection()->getConfiguration()->setSQLLogger(null);
/** Definir la taille de l'enregistrement */
$size = count($data);
$batchSize = 20;
$i = 1;
/** Processus start */
$progress = new ProgressBar($output, $size);
$progress->start();
foreach ($data as $row) {
$equipe = $this->getContainer()->get('equipe.manager.equipe_manager')->getFullEquipes();
if (!is_object($equipe)) {
$equipe = new Equipes();
}
/** Mise à jour des informations */
$equipe->setNom($row['nom']);
$equipe->setPrenom($row['prenom']);
$equipe->setPoste($row['poste']);
$equipe->setApropos($row['apropos']);
/** persister les nouvelles modifications */
$em->persist($equipe);
/** a chaque 20 iterations on fait un flush */
if (($i % $batchSize) === 0) {
$em->flush();
// Detaches all objects from Doctrine for memory save
$em->clear();
// Advancing for progress display on console
$progress->advance($batchSize);
$now = new \DateTime();
$output->writeln(' equipe importée ... | ' . $now->format('d-m-Y G:i:s'));
}
$i++;
}
/** Flush and clear */
$em->flush();
$em->clear();
/** Finaliser le process */
$progress->finish();
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return array|bool
*/
public function get(InputInterface $input, OutputInterface $output)
{
$date = new \DateTime();
/** recuperer le fichier csv */
$filename = "web/uploads/import/equipe/equipe_" . $date->format('d-m-Y') . ".csv";
/** conversion du fichier csv to array */
$converter = $this->getContainer()->get('adminisitration_csv.csv_import.convert_csv_to_array');
$data = $converter->convert($filename, ';');
return $data;
}
}