728x90

먹보고릴라님 | 쿼리 | 2013-12-16 17:48:46


안녕하세요

CSV 파일을 import from 으로 하여 파일을 insert  시키는데 있어

csv파일에 있는 데이터들이 반은 들어가고 반이 안들어가게 되어 질문하게 되었습니다.

SQL3129W  The date, time, or timestamp field containing ""2013-8-2 12:3:38""
in row "11" and column "10" was padded with blanks.

SQL3129W  The date, time, or timestamp field containing ""2013-8-2 11:39:20""
in row "11" and column "16" was padded with blanks.

SQL3129W  The date, time, or timestamp field containing ""2013-8-2 11:39:20""
in row "11" and column "17" was padded with blanks.

SQL3148W  A row from the input file was not inserted into the table.  SQLCODE
"-180" was returned.

SQL0180N  The syntax of the string representation of a datetime value is
incorrect.  SQLSTATE=22007


위와 같은 메시지가 나옵니다.

위와 같은 메시지를 처리할려면 trim으로 공백을 지워야 할 것 같은데

방법이 있을까요?




pajama 2013-12-17 17:07:17
데이터 파일을 수정하기는 어려운 상황이신듯 합니다.
재현을 해보려 했으나 잘되지 않네요
임시테이블에 CHAR, VARCHAR형태로 입력후에 trim, timestampformat을 사용해서 로드하시는건 어떠신지요


먹보고릴라 2013-12-18 00:36:20
pajama님 안녕하세요
그러면 임시테이블에 값 형태를 char로 변경 후 insert 하니 됩니다. 
이후 실제 테이블에 값을 입력 하려할 때 형태를 맞출려면 지난번 알려주신 timestampformat 형태 하여 insert하나요?
제가 test하는건 대량의 데이터를 insert 구문으로 하기 어려울때 csv 파일로하여
import 시키는 test 하고 있습니다.
그런데 저 날짜 형태에서 계속 헤매고 있습니다. 
그리고 실제 테이블에 ID 값이 기본값으로 되어 있는데 임시테이블을 만들때 실제 테이블 create 구문으로 만들려하면
만들어지지 않더라고요 그래서 그냥INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (CACHE 1), 
이 값을 빼고 만들면 되는데 테이블 복사하려 하니 ID 값에서 걸리고요...
도와주세요~^^

먹보고릴라 2013-12-18 03:27:38
import from data.csv of del modified by timestampformat="YYYY-MM-DD HH:MM:SS" insert into DB명 (column명,....)
SQL3109N The utility is beginning to load data from file "data.csv".

SQL3191N The field in row "1", column "10" which begins with "2013-8-19
11:0:37" does not match the user specified DATEFORMAT, TIMEFORMAT, or
TIMESTAMPFORMAT. The row will be rejected.

SQL3110N The utility has completed processing. "1" rows were read from the
input file.

이와 같이 다른 방법을 찾긴 한 것 같은데요.. 에러에 대한것을 검색해봐도 뭔말인지 이해가 안가네요... 
혹시 아실까요?
데이터는 다른 값들은 들어가는대 timestamp형식만 데이터가 들어가질 않네요

pajama 2013-12-18 22:10:48
아래와 같이 재현해 보았습니다.

로드 파일 data.csv
1,1,1,1,1,1,1,1,1,2013-8-2 12:3:38,1,1,1,1,1,2013-8-2 11:39:20,2013-8-2 11:39:20

테이블
create table test1(
col1 int,
col2 int,
col3 int,
col4 int,
col5 int,
col6 int,
col7 int,
col8 int,
col9 int,
col10 timestamp,
col11 int,
col12 int,
col13 int,
col14 int,
col15 int,
col16 timestamp,
col17 timestamp)


테스트 1
import from data.csv of del insert into test1
SQL3129W 오류가 발생하면서 데이터 입력이 되지 않습니다.


테스트 2
import from temp4.csv of del modified by timestampformat="YYYY-MM-DD HH:MM:SS" insert into test1
SQL3191N 오류가 발생하면서 데이터 입력이 되지 않습니다.


테스트 3
import from temp4.csv of del modified by timestampformat="YYYY-M-D H:M:S" insert into test1
데이터 입력됨


timestampformat을 import 옵션에서 지정할 수 있는데 MM DD HH 와 같은 경우 한자리 숫자를 나타낼때 01 ~ 09 식으로 나타내기 때문에 형식이 일치하지 않아 오류가 발생합니다.

timestampformat 옵션에 대해서는 아래 페이지를 참고하세요
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.cmd.doc/doc/r0008304.html

먹보고릴라 2013-12-19 16:28:51
pajama님 안녕하세요
테스트해주심에 감사합니다.^^
항상 도와주셔서 감사합니다.^^
해당 참고 페이지를 봐도 잘 몰랐는데 겨우 문제를 해결했습니다. 감사합니다.



728x90

+ Recent posts