2017-05-06 91 views
0

我正嘗試將數據從Google Maps API生成的JSON文件傳輸到我的PostgreSQL數據庫中。這是通過cURL完成的,我確保權限已被正確設置。如何將Google Maps API導入PostgreSQL?

的網址:

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=London&destinations=Paris&key=AIza-[key-redacted]-3z6ho-o

查詢:

copy bookings.import(info) from program 'C:/temp/mycurl/curl "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=London&destinations=Paris&key=AIzaSyBIhOMI68hTIFarH4jrb_eKUmvY3z6ho-o" --insecure' 

然而,當我嘗試用類型的列 '信息' 來做到這一點對我的表「JSON ',我得到以下錯誤:

ERROR: invalid input syntax for type json DETAIL: The input string ended unexpectedly. CONTEXT: JSON data, line 1: { COPY import, line 1, column info: "{" ********** Error **********

ERROR: invalid input syntax for type json SQL state: 22P02 Detail: The input string ended unexpectedly. Context: JSON data, line 1: { COPY import, line 1, column info: "{"

我試圖不包括目前的PHP或任何其他工具的東西,但如果唯一的選擇是,我一定會考慮它。

你們究竟認爲我做錯了什麼?它是語法,格式還是我錯過了什麼?

謝謝!

+0

maps API非常漂亮 - 打印輸出,它看起來像COPY窒息了空白。 'COPY'假定每一行都是新記錄。 –

+0

會是API或COPY的問題嗎?謝謝! –

+0

警告:您已將示例中的未編輯密鑰。 –

回答

0

COPY假定每個換行符都表示一條新記錄。不幸的是,Google Maps DistanceMatrix API非常適合打印您的響應,這意味着它通過23行,其中沒有一個是有效的JSON。

您可以通過管道curl響應類似於jq來解決此問題。

copy imports(info) from program 'curl "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=London&destinations=Paris&key=<my_key>" --insecure | /usr/local/bin/jq "." -c'

jq如果你想按摩響應在數據庫中積攢之前,多一點有很多有用的功能。

+0

非常感謝你Dmitri !!!它像一個魅力一樣工作,全部保存在一行中! 對於任何有興趣的人,這裏是它的代碼; 從程序'C:\ temp \ mycurl \ curl複製bookings.import(信息)「https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=London&destinations=Paris&key=[key-regulated ]「--insecure | C:\ temp \ mycurl \ jq「。」 -C' –