2014-06-25 18 views
2

請原諒我示例中的任何語法錯誤;我是SQL新手。 對於這個問題,讓我們假設我有這個假設的結構:在查找外鍵時將CSV導入到MySQL

AUTHORS_LIST:

  • AUTHOR_ID INT NOT_NULL AUTO_INCREMENT PRIMARY
  • AUTHOR_NAME VARCHAR(30)NOT_NULL

books_list:

  • book_id INT NOT_NULL AUTO_INCREMENT PRI MARY
  • book_author_id INT NOT_NULL FOREIGN_KEY(authors_list.author_id)
  • BOOK_NAME VARCHAR(30)NOT_NULL

一般進口書的時候,我也只知道書名和作者姓名。我終於想通了如何使用僅此數據插入到books_list

INSERT INTO `books_list`(`book_author_id`, `book_name`) VALUES ((SELECT `author_id` FROM `authors_list` WHERE `author_name` = 'SomeAuthorName'), 'SomeBookName') 

不過,我有一個.csv文件只包含列author_namebook_name。我以前一直使用phpMyAdmin導入.csv文件,但這些表沒有外鍵。有什麼辦法可以使用這個「實時查找」功能導入一個.csv的表單。

+0

@Fanda會這是一個SQL語句或PHP或類似的東西?現在,我一直在使用.csv到Excel中,並且在作者表的本地副本上執行VLOOKUP以獲得'id' - 看起來您建議的過程需要大約相同的時間? – gautam

回答

2

您可以直接使用SQL:http://dev.mysql.com/doc/refman/5.1/en/load-data.html

如果你需要比ID生成更多的邏輯,你可以將數據導入另一個表,然後寫腳本或程序將數據從該表中複製到books_list,使用一些自定義的邏輯。

如果我們的步驟有效,請使用它。數據量可能會受到限制。如果達到極限,請使用建議的方式。

+0

我最終創建了一個'books_inserter'表,它具有與我的CSV相同的結構,然後在那個會執行所需查找並將數據插入到'books_list'中的觸發器上。可能不是最有效的方法,到目前爲止,我必須在一段時間後手動清除'books_inserter'表,但它完成了工作。感謝您指點我正確的方向! (我沒有足夠的代表給你+1,但意圖在那裏!) – gautam

+0

您可以(應該)使用「標記爲答案」。這是如何使用本網站的正確方法。 – Fanda