2011-02-11 51 views

cevap

1

As MySQL dokümantasyon ekibinin bir üyesi tarafından here belirtti:

It's not atomic. The records loaded prior to the error will be in the 
table. 

Çalışma civarı adanmış tabloya veri almak ve sonra atomik operasyon olacak INSERT INTO ... SELECT ... çalıştırmaktır. Büyük veri setlerinde bu uzun işlemin potansiyel problemidir.

+0

Lütfen bunun işlemleri desteklemeyen MyISAM tabloları için geçerli olduğunu unutmayın. InnoDB en azından LOAD DATA ... işlemini bir işlem olarak ele alır. – nos

1

MySQL manual, MySqlBulkLoader öğesinin bir 'LOAD DATA INFILE' sarıcısı olduğunu gösterir. Eğer, IGNORE atlanır benzersiz anahtar değeri varolan satırı çoğaltmak giriş satırları belirtirseniz

: 'LOAD DATA INFILE' belgelerine bakarken ben bu paragrafı ettim. seçeneğini belirtmezseniz, ya seçeneği belirtin, davranışı, LOCAL anahtar sözcüğünün belirtilip belirtilmediğine bağlıdır. LOCAL olmadan, bir yinelenen anahtar değeri bulunduğunda hatası oluşur ve metin dosyasının geri kalanı yoksayılır. LOCAL ile, varsayılan davranışı, IGNORE'un belirtilen ile aynıdır; Bunun nedeni, sunucunun , işlemin ortasında dosyasının iletimini durdurmanın bir yolu yoktur.

İşlemler hakkında bir tartışma bulunamadı, ancak yukarıdaki paragrafta işlemlerin mümkün olmadığı belirtiliyor. Bir geçici çözüm, verileri bir içe aktarma tablosuna aktarmak ve ardından işlemleri istenen tabloya kullanarak işlemek için ayrı bir saklı yordam kullanmak olacaktır.

Yani CEV

İlgili konular