2011-02-10 13 views
18

Büyük bir CSV dosyasına sahibim, bunu bir MySQL tablosuna yükleyeceğim. Ancak, bu veriler utf-8 biçiminde kodlanmıştır, çünkü bazı ingilizce olmayan karakterler içerir. Tablodaki ilgili sütunun karakter kümesini utf-8 olarak ayarlamıştım. Ama dosyamı yüklediğimde. ingilizce olmayan karakterler tuhaf karakterlere dönüşür (tablo satırlarımda bir seçim yaptığımda). Verilerimi tabloya yüklemeden önce kodlamam gerekir mi? eğer evet bunu nasıl yapabilirim. Verileri yüklemek ve LOAD DATA LOCAL INFILE komutunu kullanarak Python kullanıyorum. Sen göndermesi gerektiğini sayesindeutf-8 kodlu metni MySQL tablosuna yükleme

http://dev.mysql.com/doc/refman/5.1/en/load-data.html dediği gibi

cevap

13

, size CSV kullandığı charset "KARAKTER SET" LOAD DATA isteğe bağlı parametre YEREL INFILE

2

dosyasını belirtebilirsiniz

init_command = 'SET NAMES UTF8' 
use_unicode = True 
charset = 'utf8' 

MySQLdb.connect() yapıyor

dbconfig = {} 
dbconfig['host']   = 'localhost' 
dbconfig['user']   = '' 
dbconfig['passwd']   = '' 
dbconfig['db']    = '' 
dbconfig['init_command'] = 'SET NAMES UTF8' 
dbconfig['use_unicode']  = True 
dbconfig['charset']   = 'utf8' 

conn = MySQLdb.connect(**dbconfig) 

düzenleme: ah, üzgünüm, bkz size "LOAD DATA LOCAL INFILE" kullanmakta olduğunuz kattık -

62

deneyin bu başlangıçtaki soruya :) dan belli değildi
+5

kabul edilen yanıt olmalıdır – memical

+0

ekleyerek "CHARACTER SET UTF8" anahtarı oldu! – nemnesic

+0

Oh, beni çok uzun sürdü. Her şeyi denedi, sadece utf8'i latin'e dönüştürerek utf 8'lik bir tabloya aktarmaya devam etti. Kodlama seçeneği harikalar çalıştı. – John

2

Karakterlerinizi dosyada kodlamanıza gerek yoktur, ancak bu dosyayı veritabanına yüklemeden önce dosyanızın UTF-8'de kodlandığından emin olmanız gerekir.