Gae – Google App Engine Upload *.csv File in Datastore

Yorum bırakın

25/03/2013 tarafından electrocoder

Merhaba. Bir proje için kullandığım Google App Engine serverlarına 4000 kayıttan oluşan bir   dosyayı göndermek için uzun uğraşlar sonucunda başarılı oldum. İnternette ve “developers.google.com” üzerindeki dökümanlar pek yeterli olmadığı için yakın zamanda kitabı yayınlanan “Suat ATAN” Beye mail ile sorunumu bildirdim. Kendisi ilgilendi ve bir çözüm önerdi. *.csv formatındaki veriyi file upload yöntemi ile datastore’ ye gönderebileceğimi söyledi. Şuradaki linkten çözüm incelenebilir. Kendisine buradan teşekkür ediyorum.

 

Şimdi vereceğim örnek ise Bulk Loader yöntemini kullanmaktadır.

Bulk loader’ ı kullanmak için ilk yapmamız gereken “bulkloader.yaml" dosyasını oluşturmak. Bu dosyanın oluşmasını otomatik olarak yaptıgımız gibi manuel de yapabiliyoruz. 

bulkloader.yaml dosyasını otomatik yapılandırmak için google dökümanlarda yazdığı gibi;

appcfg.py create_bulkloader_config –filename=bulkloader.yaml –url=http://your_app_id.appspot.com/_ah/remote_api

komutunu terminal üzerinde girmeliyiz. “filename” olarak bulkloader.yaml ismini değiştirmedim.  “url=http://your_app_id.appspot.com/_ah/remote_api” url olarak projemin “.appspot.com” uzantılı ismini tam olarak girdim. Örnek olarak “deneme.appspot.com” ismini kullanabiliriz.

 

Komut terminal üzerinde çalıştırıldığında resimdeki çıktı alırsınız ve “bulkloader.yaml” dosyasının oluştugunu görürsünüz.

gae-upload

 

 

 

 

“bulkloader.yaml” dosyasını otomatik veya manual yaptıgınızda dosya içerigi şöyle olmalıdır. Eger yükleme dosyanızın class ları halihazırda yoksa dosya içeriği boş görülebilir.

“bulkloader.yaml” dosyasının içeriği:

python_preamble:
– import: google.appengine.api.datastore
– import: google.appengine.ext.bulkload.transform
– import: google.appengine.ext.db
– import: re
– import: base64

transformers:
– kind: SampleTable
connector: csv
connector_options:
property_map:
– property: __key__
external_name: key
export_transform: transform.key_id_or_name_as_string
– property: code
external_name: code
– property: device
external_name: device
– property: manufacturer
external_name: manufacturer
– property: base
external_name: base
– property: package
external_name: package
– property: leaded_equivalent
external_name: leaded_equivalent

“bulkloader.yaml” dosyasının düzenlenmesi bittikten sonra Google App Engine Sunucularına *.csv dosyamızı şu şekilde göndereceğiz.

appcfg.py upload_data –config_file=bulkloader.yaml –filename=test_data.csv –kind=SampleTable –url=http://your_app_id.appspot.com/_ah/remote_api

 

Eğer işlem başarılı sonuçlanırsa aşağıdaki gibi bir sonuç almanız lazım

[INFO ] 1020 entities total, 0 previously transferred
[INFO ] 0 entities (22700 bytes) transferred in 492.8 seconds
[INFO ] Some entities not successfully transferred

Ben ücretsiz servis kullandığım için günlük kotayı doldurdum ve şuan veri giremiyorum.

Sizin işlemi “successfully” olarak bitirmeniz lazım.

İyi çalışmalar.

 

 

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: