Toplu Uçlar Ve Hazırlanan Sorgu Hatası

0 Cevap php

Tamam, bu yüzden MySQL sorgu sonuçları ile bir MS Access veritabanı tablo doldurmak gerekir. Bu hiç zor değil. Ben bir geçici adına kopyalar bir şablon. Mdb dosyasını ve ODBC yoluyla açar nereye yazılır programı var. Şimdiye kadar sorun yok.

Ben Erişim toplu sokulmasına desteklemiyor fark ettik (VALUES (foo, bar), (second, query), (third query)). Yani ben (yüzlerce satır binlerce potansiyel var) satır başına bir sorguyu yürütmek gerekiyor demektir. İlk performans testleri Access içine yaklaşık 900 ekler / sn hızını gösterir. Bizim en büyük veri setleri ile, ki (dünyanın sonu değil Hangi, ama açıkçası daha hızlı daha iyi) dakika yürütme kez anlamına gelebilir.

Yani, bir hazırlanmış deyimi test çalıştı. Ama ben bir hata alıyorum (Warning: odbc_execute() [function.odbc-execute]: SQL error: [Microsoft][ODBC Microsoft Access Driver]COUNT field incorrect , SQL state 07001 in SQLExecute in D:\....php on line 30).

İşte kullanıyorum kod (Line 30 olan odbc_execute):

$sql = 'INSERT INTO table 
    ([field0], [field1], [field2], [field3], [field4], [field5]) 
    VALUES (?, ?, ?, ?, ?, ?)';
$stmt = odbc_prepare($conn, $sql);
for ($i = 200001; $i < 300001; $i++) {
    $a = array($i, "Field1 $", "Field2 $i", "Field3 $i", "Field4 $i", $i);
    odbc_execute($stmt, $a);
}

Yani benim soru iki yönlüdür. Öncelikle, ben bu hatayı alıyorum neden herhangi bir fikir var (ben kontrol ettim, ve dizideki numarası parametre ? belirteçlerin sayısını eşleşen alan listesini maçları)? Ve ikincisi, ben bile bu rahatsız gerekir ya da sadece düz INSERT deyimleri kullanılır? Sanki zaman önemli değildir, ama eğer mümkünse, ben (900 işlem / sn zaten yüksek olduğu Sonra tekrar, ben, disk üretilen sınırlı olabilir) mümkün olduğunca zaman kadar düşük olsun istiyorum, dedi .. .

Teşekkürler

0 Cevap