Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 정은경 본부장님
- sharonchoi
- 조현병
- wuhan
- 웨일즈
- 신종코로나
- everybody wants you
- 미중
- parasite
- 진짜영웅
- 봉준호감독통역사
- 우한 코로나
- 우한코로나
- 치앙마이
- 우한
- 우한코로나바이러스
- 코로나
- 중국외교부
- red hearse
- Bolton
- 전염병
- 확진자수
- 최성재
- 어서와한국은처음이지
- 창궐
- 필리핀사망
- 코로나19
- 봉준호감독통역
- 코로나바이러스
- cnn
Archives
- Today
- Total
오지's blog
snowflake에 insert시 .0이 붙는 문제 해결 과정 본문
728x90
반응형
크롤링해서 받은 csv파일에 bom문자가 있었다. 이것을
df = pd.read_csv(os.path.join(filefullpath, filename), encoding='utf-16', header=None)
df.iloc[:,0] = df.iloc[:,0].apply(lambda x : x.replace("\ufeff",""))
이렇게 가져오면 문제가 주문번호와 같은 숫자같은 문자열에 .0이 붙어 float형으로 바뀌었다. 알고보니 dataframe에서 int타입인줄알고 읽었는데 nan값이 있으면 int타입은 nan값을 허용하지 않으므로 float형으로 자동적으로 바뀌는 문제가 있었다.
그렇다고
df.iloc[:,0] = DF.iloc[:,0].apply(lambda x : x.replace("\ufeff","").replace("\"", ""))
다음과 같이 csv파일에서 "따옴표를 없애자니 , 가 있는 데이터를 두개의 컬럼이라고 잘못가져올까봐 이 방법은 지향했다. 물론 첫번째 컬럼은 주키라서 , 가 경우는 없었다. 그래도 클리어하게 해결하고자 , 고민을 하였다.
그 결과
df = pd.read_csv(os.path.join(filefullpath, filename), encoding='utf-16', header=None, dtype=object)
df.fillna('NULL')
df.iloc[:,0] = df.iloc[:,0].apply(lambda x : x.replace("\ufeff",""))
다음과 같이 모두 문자열로 바꿔주고 쿼리 단에서 nan은 null값으로 처리하고 type을 맞춰주는 방식으로 해결하였다.
CREATE OR REPLACE FILE FORMAT ODS.O_GOQA TYPE=csv SKIP_HEADER=1 FIELD_OPTIONALLY_ENCLOSED_BY = '"', NULL_IF=('0000-00-00 00:00:00','null', 'NULL', '0000-00-00', 'nan', 'NaN');
INSERT INTO ODS.O_faq(SNO, MALLSNO, CATEGORY, SUBJECT, CONTENTS, ANSWER, ISBEST, SORTNO, BESTSORTNO, REGDT, MODDT, LOAD_DTTM) SELECT replace(T.$1,'"')::number,T.$2,T.$3,T.$4,T.$5,T.$6,T.$7,T.$8,T.$9,T.$10,T.$11,T.$12 from @l/220426/es_faq.csv (FILE_FORMAT=>'O_faq') as T;
'개발노트 > 데이터베이스' 카테고리의 다른 글
snowflake 에러메세지: 100096 (22007): Can't parse 'y' as timestamp with format 'AUTO' 에러 발생 원인과 해결책 (0) | 2022.05.31 |
---|---|
snowflake Numeric value 'string_value' is not recognized. 에러 발생이유 (0) | 2022.05.09 |
snowflake db구성에 관한 쿼리 (0) | 2022.04.14 |
centos에서 pip install mysqlclient설치시 에러 해결방안 (0) | 2021.12.21 |
sqlalchemy.exc.OperationalError: (mariadb.OperationalError) Unknown server host '@ip_address' (0) | 2021.10.21 |
Comments