Process large volumes of data efficiently with PDOdb.
Insert multiple rows in a single query:
$users = [
['name' => 'Alice', 'email' => 'alice@example.com', 'age' => 30],
['name' => 'Bob', 'email' => 'bob@example.com', 'age' => 25],
['name' => 'Carol', 'email' => 'carol@example.com', 'age' => 28]
];
$count = $db->find()->table('users')->insertMulti($users);
echo "Inserted {$count} users\n";INSERT INTO users (name, email, age) VALUES
(:name_0, :email_0, :age_0),
(:name_1, :email_1, :age_1),
(:name_2, :email_2, :age_2)// Update in batch
foreach ($users as $user) {
$db->find()
->table('users')
->where('id', $user['id'])
->update(['last_login' => Db::now()]);
}$db->startTransaction();
try {
foreach ($userIds as $userId) {
$db->find()
->table('users')
->where('id', $userId)
->update(['status' => 'active']);
}
$db->commit();
} catch (\Exception $e) {
$db->rollback();
throw $e;
}$db->find()->table('users')->loadCsv('/path/to/users.csv');$db->find()->table('products')->loadCsv('/path/to/products.csv', [
'fieldChar' => ',',
'fieldEnclosure' => '"',
'fields' => ['id', 'name', 'price'],
'linesToIgnore' => 1, // Skip header
'local' => true
]);$db->find()->table('users')->loadXml('/path/to/users.xml', [
'rowTag' => '<user>',
'linesToIgnore' => 0
]);// ❌ Slow: Multiple round trips
foreach ($users as $user) {
$db->find()->table('users')->insert($user);
}
// 1000 users = 1000 queries// ✅ Fast: Single query
$db->find()->table('users')->insertMulti($users);
// 1000 users = 1 query$db->startTransaction();
try {
$db->find()->table('users')->insertMulti($users);
$db->find()->table('profiles')->insertMulti($profiles);
$db->commit();
} catch (\Exception $e) {
$db->rollback();
throw $e;
}// Insert in batches of 1000
$batches = array_chunk($largeDataset, 1000);
foreach ($batches as $batch) {
$db->startTransaction();
try {
$db->find()->table('users')->insertMulti($batch);
$db->commit();
} catch (\Exception $e) {
$db->rollback();
throw $e;
}
}- Batch Processing - Process large datasets
- Transactions - Ensure data consistency
- Performance - Optimization tips