2016-09-27 9 views
1

複数の行のデータを挿入しようとしているローカルデータベースがありますが、重複は不要です。私は挿入しようとしている2番目のDBがありません。私はSQLファイルを持っています。私はこの挿入を実行しようとしていデータを挿入して特定の列をチェックして重複を避ける

(db)artists 
    (table)names->  ID | ArtistName | ArtistURL | Modified 

:構造は私がに挿入していますデシベルのためにこれで

INSERT names (ArtistName, Modified) 
VALUES (name1, date), 
     (name2, date2), 
     ... 
     (name40, date40) 

の質問はどのように私はデータを挿入してチェックすることにより、重複を避けることができ、ありますSQLを使用して挿入したいデータのこのリストに、特定の列を追加しますか?

+2

どのRDBMSを使用していますか、mySQl、SQLサーバーですか? – EoinS

+0

xamppからSQLiteを有効にしてMariaDBを使用しています – DJSweetness

+0

どのようにCSVから値を入力していますか? (name1、date)形式にフォーマットするスクリプトがありますか? – EoinS

答えて

0

何を複製しますか?名前が重複していますか?重複行ですか?私はdupを仮定しませんArtistName

  1. テーブル上にUNIQUE(ArtistName)(またはPRIMARY KEY)があります。
  2. IGNOREの代わりにINSERT IGNOREを使用してください。

(ノーLEFT JOIN、など)

0

私は@Hart COのアドバイス完全に新しいテーブルにすべての私の値を挿入することによって、少しずつ、次のことになりました。次に、私はこのSQLステートメントを使用しました:

SELECT ArtistName 
FROM testing_table 
WHERE !EXISTS 
(SELECT ArtistName FROM names WHERE 
testing_table.ArtistName = testing_table.ArtistName) 

これは、私のデータにあって名前テーブルではないすべての私のアーティスト名を与えました。 それから、sqlファイルにエクスポートしてINSERTを少し調整して、対応するデータとともに名前テーブルに挿入しました。

INSERT IGNORE INTO `names` (ArtistName) VALUES 
*all my values from the exported data* 

ここで、(ArtistName)は返されたデータのいずれかを持つことができます。たとえば、 (ArtistName、ArtistUrl、Modified)などです。エクスポートから返された値が3つの値を持つ限り。

これはおそらく最も効率的ではありませんが、私がやろうとしていたことで効果的でした。

関連する問題