2016-06-29 52 views
-1

我有一個CSV幾百萬行的文件:導入特定列

origin,destination,commute_time 
A,B,123 
C,D,234 
... 

我想這個加載到一個表中Google Cloud SQL,看起來像這樣:

CREATE TABLE commutes(
    id INT NOT NULL AUTO_INCREMENT, 
    origin VARCHAR(20), 
    destination VARCHAR(20), 
    time INT, 
    distance FLOAT, 
    PRIMARY KEY(id) 
); 

的Cloud SQL具有CSV導入功能:

Cloud SQL CSV Import

Unfortu最近,這假定CSV文件沒有標題行(它將標題行解釋爲數據)。它還假定CSV文件包含從第一個到最後一個的每一列。因此CSV文件中的origin列被解釋爲表中的id列。

如何將數據導入到此表中?我正在使用Cloud SQL v2測試版。 Cloud SQL v1有一個import API,它允許您指定列的列表,但v2還沒有API。

+0

我錯了,但你發佈你的問題,並在答案後1秒? – Destrif

+0

[可以問和回答你自己的問題](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/)。 – danvk

+0

是的,但不是一秒鐘之後...否則開發人員需要時間閱讀您的整篇文章以找到解決方案。如果你想保留它的互聯網痕跡,請將它發佈到其他地方。不要讓其他開發者寬鬆的時間。將其寫入標題[已回答],謝謝 – Destrif

回答

-1

訣竅是重新排列表中的列以匹配CSV中的列。特別是,您希望在出現的列之後放置像id(從CSV中缺失)列。

所以這個表應該是這樣的:

CREATE TABLE commutes(
    origin VARCHAR(20), 
    destination VARCHAR(20), 
    time INT, 
    distance FLOAT, 
    id INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY(id) 
); 

和CSV應該是這樣的:

A,B,123 
C,D,234 
... 

Cloud SQL V2 Quickstart把它的例子id列在最後的位置,所以我想這是一個標準做法。