Skip to menu

7장 데이터 불러오기, curl으로 웹에서 Baltimore camera 데이터를 읽어오는 부분을 진행하고 있습니다.

실습 하다가 에러가 나거나 잘 안되는 부분이 있어서 문의글을 올립니다.


1. curl 명령어 관련 

책의 설명대로 download.file(fileUrl, destfile = "./data/cameras.xlsx", method = "curl")을 실행하면 아래 오류 메세지가 나옵니다.

Warning messages:

1: running command 'curl  "https://data.baltimorecity.gov/api/views/dz54-2aru/rows.csv?accessType=DOWNLOAD"  -o "./data/cameras.csv"' had status 127 

2: In download.file(fileUrl, destfile = "./data/cameras.csv", method = "curl") :

  다운로드의 종료상태(exit status)가 0이 아닙니다.


이 문제는 install.packages("RCurl"), library(RCurl)을 실행해주고,

download.file(fileUrl, destfile = "./data/cameras.xlsx", method = "libcurl")으로 하여 해결했습니다.


2. 책의 문구는 'cameras.xlsx 파일로 저장한다.'라고 되어 있는데 바로 아래 코드에는 destfile = "./data/cameras.csv"으로 되어 있습니다.

다운로드는 csv 형식으로 하면 엑셀로 에러 없이 잘 열리는데 xlsx으로 하면 열 때 에러가 나옵니다.


3. Baltimore cameras.csv 파일을 read.xlsx 명령어로 읽을려고 하면 아래 에러가 나옵니다.

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 

  java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream


4. Baltimore cameras.csv 파일을 엑셀로 열고 일부 행을 복사하여 새로 만든 엑셀 파일에 붙여넣고 이 파일을 read.xlsx 명령어로 읽으니 에러 없이 

잘 됩니다. 

결론적으로는 curl 할때 xlsx 형태로 제대로 저장이 안되서 생기는 문제인 것 같은데, 책에 있는 curl이 안되서 libcurl을 대신 이용하여 생기는 문제인지는

확실치가 않네요. 조금 더 찾아봐야겠습니다. 


 ※ 기타 사항으로 xlsx 패키지 설치할 때 jdk 1.8이 설치된 상태에서는 에러가 나고, jdk 1.6을 설치하니 제대로 설치가 됩니다.(윈도우7 64비트 환경입니다.)