2016-04-01 14 views
0

Heey all、同じIDを持つ複数の名前に異なるIDを接続する

大きなデータセットでは問題があります。 約13kレコードのlibreoffice calcシート(Excelシート)が1つあります。 2列: - :その歌のレコードが有効なartist_idを持っている必要がありますArtistsSongsに外部キーでArtistsSongs アーティストの歌

私はので、私は2つのテーブルを作成したMySQLデータベースにこれらをしたいです。 私はすべてのアーティストを5kの異なるアーティストの周りに正しく挿入しました。 この表は、私がそれで何をしたいのであれば問題ないです。

問題は、自分のシートの2番目の列にある曲にアーティストのIDをどのように接続するのかという問題です。 私は12kの挿入クエリを作成してphpmyadminに貼り付けることができます。

ヒント、正規表現、その他のソリューションはありますか?

EDIT

マイExcelシート:(異なる)アーティストのリスト

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

とartist_id曲の長さが異なる:

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

マイ出力する必要があります。それは問題です

答えて

1

したがって、songsテーブルにはフィールドartist_id | songがあります。あなたは(あなたのデータと仮定すると、行1で始まる)あなたのINSERT文を作るために式を使用することができます。

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

我々はA1artistためartist_idをつかむためにvlookup()式を使用します(あなたのArtist (distinct) | Artist_Id列がC:Dあると仮定すると、この同じシートで。

それからちょうど12000行することを下にコピーして、あなたが設定されている。

イベントでExcelでのごsongが、その中に単一引用符を持っていることを、あなたにそれらをエスケープするか、何もしないで置き換えることができます。

エスケープ:

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

削除:

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

これはあまりにも悪いことはできません。私は列Aのアーティストのリストをコピーしています。列Aには、それぞれの曲(列Bにあります)の値が重複していて、アーティストが再びリストされています。 だから私は重複を抽出し、別のアーティストの値を持つ新しい行を作って、5k行のアーティストを残して、まだ12k行の曲を残しています。どのようにそれらを接続しますか? – Baklap4

+0

私は混乱しています..あなたは 'Artist |歌。この例の 'Artist'は' Artist ID'ではなく 'Artist Name'ですが、' INSERT'では 'ID'が必要ですか?そうであれば、 'Artist'テーブルをMySQLの新しいタブに抽出し、vlookupを実行して' Artist_ID | Song'を2列に並べて、上記のような 'INSERT'文を生成します。ある時点で、スプレッドシートの同じ行に 'Artist_ID'と' Song'を入れて挿入できるようにする必要があります。 – JNevill

+0

私の質問を編集しました:) – Baklap4

関連する問題