2016-04-01 41 views
0

Heey all,Farklı kimliklerin aynı ada sahip birden çok ada sahip olmasını sağlayın

Geniş bir veri kümesiyle ilgili sorun yaşıyorum. Yaklaşık 13 bin kayıtla bir libreoffice calc sheet (excel sheet) var. 2 Sütunlar: -: yani Şarkı kayıtları geçerli bir artist_id olması gerekir Artists için Songs yabancı anahtar ile Artists, Songs Sanatçı Şarkı

Ben bu yüzden 2 tabloları oluşturduk mysql veritabanına bunları istiyorum. Tüm sanatçıları yaklaşık 5 bin farklı sanatçıya ait doğru bir şekilde ekledim. Bu tablo, onunla ne yapmak istediğim için çalışıyor, bu yüzden sorun değil.

Sorun, sanatçıların kimliğini, sayfamın 2. sütununda bulunan şarkıya nasıl bağlarım olur. Bunu yapmak istiyorum, böylece 12k ekleme sorguları oluşturabilir ve bunları phpmyadmin'e yapıştırabilirim.

Herhangi bir ipucu, regex, diğer çözümler?

DÜZENLEME

My Excel tabaka:

Artists  Songs    Artist (distinct) Artist_id 
Abba  mamma mia   abba     1 
Abba  waterloo   greenday    2 
Greenday american idiot 

My çıkış ihtiyacı olması: sanatçı (farklı) ve artist_id listesi Şarkı uzunluğu farklı

INSERT INTO Songs Values (1, "mamma mia"); 
INSERT INTO Songs Values (1, "waterloo"); 
INSERT INTO Songs Values (2, "american idiot"); 

.

cevap

1

Bu nedenle songs tablonuzun alanları artist_id | song alanlarına sahiptir. Sadece kendi INSERT açıklama yapmak için bir formül kullanabilirsiniz (veri varsayarsak 1 satırına başlar):

="INSERT INTO songs (artist_id, song) VALUES (" & Vlookup(A1, C:D, 2, false) & ",'" & B1 & "');" 

Biz A1 yılında artist için artist_id kapmak için vlookup() formülü kullanabilirsiniz (sizin Artist (distinct) | Artist_Id kolonlar C:D olduğunu varsayarsak Bu aynı sayfada.

Sonra sadece 12000 satır aşağı kopyalamak ve işlem tamam.

excel daki song bunun tek tırnağı vardır durumunda, sizi ya dışarı kaçabilir ya da hiçbir şeyle değiştiremez.

Kaçış:

="INSERT INTO songs (artist_id, song) VALUES (" & Vlookup(A1, C:D, 2, false) & ",'" & SUBSTITUTE(B1, "'", "\'") & "');" 

Kaldır:

="INSERT INTO songs (artist_id, song) VALUES (" & Vlookup(A1, C:D, 2, false) & ",'" & SUBSTITUTE(B1, "'", "") & "');" 
+0

Bu çok kötü mümkün değildir. Her bir Şarkı için (B sütunundaki) yinelenen değerler olan sanatçı A sütununda sanatçıların bir listesini tekrar listeledim. Bu yüzden çiftleri ayıkladım ve 5k satırlık sanatçıların hala 12k satırlık şarkıları ile beni bırakarak Sanatçıların farklı değerlerine sahip yeni bir satır oluşturdum. Bunları nasıl bağlayabiliriz? – Baklap4

+0

Kafam karıştı .. Sanatçı ile bir çalışma sayfanız var. Song'. Bu örnekte 'Sanatçı' bu 'Sanatçı Kimliği' değil, 'Sanatçı Adı'dır,' INSERT 'için' ID '' ye ihtiyacınız var mı?Bu durumda, 'Sanatçı' tablonuzu MySQL'den yeni bir sekmeye çıkarın ve ardından bir vlookup yapın, böylece Artist_ID | Şarkı, yan yana iki sütun halinde, daha sonra yukarıdaki gibi "INSERT" ifadenizi oluşturun. Bir noktada, bunları ekleyebilmeniz için e-tablonuzda aynı satırda 'Artist_ID' ve' Song' olmalıdır. – JNevill

+0

Sorumu düzenledim :) – Baklap4

İlgili konular