2008-09-16 16 views

cevap

3

İçe aktarmaya çalıştığınız veriler makul bir biçimde, örneğin virgülle sınırlandırılmış ise ve veritabanı sunucunuzun makul komut satırı yardımcı programlarına sahipse, bu sorun olmamalıdır. MySQL dosyanın biçimini tanımlayan çeşitli argümanlar kabul eder "mysqlimport" komut satırı aracı var:

mysqlimport \ 
    --fields-terminated-by=, \ 
    --ignore-lines=1 \ 
    --fields-optionally-enclosed-by='"' < datafile.txt 

yoluyla veri Geçme perl/sed/awk uygun formatta onu alma ile yardımcı olabilir tek gömlekleri ve kabuk betiği dosya isimlerine, argümanlarla ilgilenmeye vb.

Unix tarafından sağlanan çeşitli komut satırı araçlarını kullanmak, bash komut dosyasının tüm noktasını oluşturur. Perl, mysql, vb. Hepsi bu araç setinin bir parçasıdır.

0

şu anda test, ama bir şey gibi olamaz:

echo "INSERT INTO foo (b,a,r) VALUES (1,2,3);" | 
    mysql -u user -psecret -h host database 

bir kabuk komut dosyası çalışmalıdır.

2

'dan veri almayı bilmemeniz mümkün: Unix kabuk komut dosyasını kullanarak bir sql komut dosyası oluşturun ve sql komut dosyasını yürütmek için veri tabanını veritabanına kullanın.

Eğer bilgi miktarı yeterince küçükse, SQL'i bellekte oluşturabilirdiniz, buna karşın size tavsiyede bulunuyoruz, çünkü geleceğin ne tutacağını asla bilemezsiniz (ve çok büyük miktarda veri olabilir). Talep başına bir çağrı kullanmak, bazen mevcut olan toplu işlemlerden faydalanmanıza izin vermez.

2

yapabilirsiniz, ancak bu mysql kullanıyorsanız, örneğin biraz çirkin olması ve bir SQL dizesi $ sql

echo $sql | mysql -u[user] -p[password] -h[host] 

Dip not sakladığınız sanabilir aslında

-2

Shell scripting (Bash veya benzeri) birincil çalışır böylece örnek hattını değiştirdi: p

düzenleme: bu iyi bir fikir ne biz daha özel bir yardım sunabilir böylece kullandığınız veritabanı bize anlatmaya olabilir niyet veritabanları ile uğraşmak değildir. Java ya da daha iyisi için gidin, bu fırsatı Python ya da Ruby gibi bir betik dilinin temellerini öğrenmek için kullanın.

+0

unix kabuğu bir betik dili ve her zaman daha iyi bir betik dili kullanma lüksüne sahip değilsiniz. Java, (woohoo yorumları şimdi IE6'da çalışır) kadar kolay ve büyük olasılıkla olmayacaktır. – Jean

1

Boru senin arkadaşın. MySQL Örneğin

:

echo 'load data infile /path/to/the/file into table table_name ...' | 
    mysql -u mysql_user_id -p 

işi yapmalıdır.

Dosyanızın bir şekilde yapılandırılmış olması şartıyla, örn. comma/tab ayrıştırılmış vb.

Ayrıntılar için, veritabanınızın kullanım kılavuzuna bakın.

+0

biçimlendirme ipucu: tüm satırların en az 3 boşlukla başladığı bir paragraf "kod" olarak biçimlendirilecektir. Bunu sizin örneklemle yapmanızı öneriyorum, bu yüzden daha iyi gözüküyor; Bu iyi bir cevap! –

2

Elbette, bir komut satırı SQL istemcisi elinizde olduğunu varsayarak yapabilirsiniz! Sybase ve isql komut satırı istemcisiyle yaptım. Hatta zekice ve awk aracılığıyla bir şeyler yollayabilir ve anında komutlar oluşturmak için komut dosyaları gönderebilirsiniz. Her şeyi yapmanın en etkili yolu olmayabilir, ama Unix hacker mojo'yu esnetmek için çok fazla fırsat var.

0

Veritabanı Yönetim Sisteminize bağlıdır. Çoğu, bazı ETL işlevlerini bile yaparak, veri almak için güçlü kabuk araçlarına sahiptir. Bu araçlar toplu yüklemeyi destekliyorlarsa bile çok performanslı olabilirler - genellikle Java JDBC bunu kolayca yapamaz.

İlgili konular