2017-05-18 6 views
-1

두 개의 동일한 테이블에 1x1보기가 있습니다. 둘 다 동일한 순서와 동일한 열과 데이터 유형을가집니다. INSERT는 SELECT *에서 실패하지만 열이 명시 적으로 언급 될 때 잘 실행됩니다.

I는 다음 명령을 실행

,

실패 및 오류 아래를

ERROR [HY000] [테라] [ODBC 테라 드라이버] [테라 데이터베이스] 잘못된 작동 튀어

INSERT INTO MAIN_DB.TABLE_A 
    SELECT * FROM TEMP_DB.TABLE_A; 

DateTime 또는 간격. INSERT 명령이 실패했습니다.

그러나 나는 명시 적 열 이름 대신 *의와 INSERT 쿼리를 실행할 때. 그것은 잘 실행됩니다.

이 잘 작동 -

  • 왜 이런 일이 -

    INSERT INTO MAIN_DB.TABLE_A 
        SELECT COL1, COL2, COL3..... COL85 FROM TEMP_DB.TABLE_A; 
    

    나는 지점을 핀 수없는 무엇입니까?

  • 잘못된 열을 찾는 방법 ?

EDIT - 테이블 열은 정확히 동일한 순서 (동일한 데이터 형식)입니다.

테이블 표시 MAIN_DB.TABLE_A

CREATE MULTISET TABLE MAIN_DB.TABLE_A ,FALLBACK , 
    NO BEFORE JOURNAL, 
    NO AFTER JOURNAL, 
    CHECKSUM = DEFAULT, 
    DEFAULT MERGEBLOCKRATIO 
    (
     COL1 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, 
     COL2 DATE FORMAT 'yyyy-mm-dd', 
     COL3 VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL4 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL5 VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL6 INTEGER, 
     COL7 CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL8 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL9 VARCHAR(40) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL10 VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL11 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL12 CHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL13 CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL14 TIMESTAMP(6), 
     COL15 TIMESTAMP(6), 
     COL16 TIMESTAMP(6), 
     COL17 DATE FORMAT 'yyyy-mm-dd' COMPRESS , 
     COL18 BYTEINT COMPRESS (0 ,1), 
     COL19 BYTEINT COMPRESS (0 ,1), 
     COL20 BYTEINT COMPRESS (0 ,1), 
     COL21 BYTEINT COMPRESS (0 ,1), 
     COL22 BYTEINT COMPRESS (0 ,1), 
     COL23 BYTEINT COMPRESS (0 ,1), 
     COL24 BYTEINT COMPRESS (0 ,1), 
     COL25 BYTEINT COMPRESS (0 ,1), 
     COL26 BYTEINT COMPRESS (0 ,1), 
     COL27 BYTEINT COMPRESS (0 ,1), 
     COL28 BYTEINT COMPRESS (0 ,1), 
     COL29 BYTEINT COMPRESS (0 ,1), 
     COL30 BYTEINT COMPRESS (0 ,1), 
     COL31 BYTEINT COMPRESS (0 ,1), 
     COL32 BYTEINT COMPRESS (0 ,1), 
     COL33 BYTEINT COMPRESS (0 ,1), 
     COL34 BYTEINT COMPRESS (0 ,1), 
     COL35 BYTEINT COMPRESS (0 ,1), 
     COL36 BYTEINT COMPRESS (0 ,1), 
     COL37 TIMESTAMP(6), 
     COL38 SMALLINT COMPRESS (0 ,1 ,2 ,3 ,4 ,5 ,6 ,7), 
     COL39 BYTEINT COMPRESS (0 ,1), 
     COL40 TIMESTAMP(6), 
     COL41 VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL42 DECIMAL(18,0) COMPRESS 0. , 
     COL43 INTEGER COMPRESS 0 , 
     COL44 INTEGER COMPRESS 0 , 
     COL45 INTEGER COMPRESS 0 , 
     COL46 INTEGER COMPRESS 0 , 
     COL47 INTEGER COMPRESS 0 , 
     COL48 INTEGER COMPRESS 0 , 
     COL49 INTEGER COMPRESS 0 , 
     COL50 CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS, 
     COL51 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL52 BYTEINT COMPRESS (0 ,1), 
     COL53 BYTEINT COMPRESS (0 ,1), 
     COL54 BYTEINT COMPRESS (0 ,1), 
     COL55 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL56 BYTEINT COMPRESS (0 ,1), 
     COL57 BYTEINT COMPRESS (0 ,1), 
     COL58 BYTEINT COMPRESS (0 ,1), 
     COL59 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL60 BYTEINT COMPRESS (0 ,1), 
     COL61 BYTEINT COMPRESS (0 ,1), 
     COL62 BYTEINT COMPRESS (0 ,1), 
     COL63 BYTEINT COMPRESS (0 ,1), 
     COL64 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL65 BYTEINT COMPRESS (0 ,1), 
     COL66 BYTEINT COMPRESS (0 ,1), 
     COL67 BYTEINT COMPRESS (0 ,1), 
     COL68 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL69 TIMESTAMP(6), 
     COL70 CHAR(2) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL71 DECIMAL(18,2) NOT NULL, 
     COL72 INTEGER COMPRESS (60 ,61 ,62), 
     COL73 TIMESTAMP(6) NOT NULL, 
     COL74 TIMESTAMP(6) NOT NULL, 
     COL75 BYTEINT COMPRESS (0 ,1), 
     COL76 BYTEINT COMPRESS (0 ,1), 
     COL77 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL78 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL79 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL80 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL81 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL82 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL83 VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL84 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
     COL85 VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC) 
PRIMARY INDEX NUPI_TABLE_A (COL1) 
PARTITION BY RANGE_N(COL2 BETWEEN '2009-01-01' AND '2025-01-29' EACH INTERVAL '1' DAY , 
NO RANGE OR UNKNOWN); 

테이블 표시 TEMP_DB.TABLE_A

CREATE MULTISET TABLE TEMP_DB.TABLE_A ,FALLBACK , 
     NO BEFORE JOURNAL, 
     NO AFTER JOURNAL, 
     CHECKSUM = DEFAULT, 
     DEFAULT MERGEBLOCKRATIO 
     (
      COL1 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, 
      COL2 DATE FORMAT 'yyyy-mm-dd', 
      COL3 VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL4 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL5 VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL6 INTEGER, 
      COL7 CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL8 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL9 VARCHAR(40) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL10 VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL11 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL12 CHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL13 CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL14 TIMESTAMP(6), 
      COL15 TIMESTAMP(6), 
      COL16 TIMESTAMP(6), 
      COL17 DATE FORMAT 'yyyy-mm-dd' COMPRESS , 
      COL18 BYTEINT COMPRESS (0 ,1), 
      COL19 BYTEINT COMPRESS (0 ,1), 
      COL20 BYTEINT COMPRESS (0 ,1), 
      COL21 BYTEINT COMPRESS (0 ,1), 
      COL22 BYTEINT COMPRESS (0 ,1), 
      COL23 BYTEINT COMPRESS (0 ,1), 
      COL24 BYTEINT COMPRESS (0 ,1), 
      COL25 BYTEINT COMPRESS (0 ,1), 
      COL26 BYTEINT COMPRESS (0 ,1), 
      COL27 BYTEINT COMPRESS (0 ,1), 
      COL28 BYTEINT COMPRESS (0 ,1), 
      COL29 BYTEINT COMPRESS (0 ,1), 
      COL30 BYTEINT COMPRESS (0 ,1), 
      COL31 BYTEINT COMPRESS (0 ,1), 
      COL32 BYTEINT COMPRESS (0 ,1), 
      COL33 BYTEINT COMPRESS (0 ,1), 
      COL34 BYTEINT COMPRESS (0 ,1), 
      COL35 BYTEINT COMPRESS (0 ,1), 
      COL36 BYTEINT COMPRESS (0 ,1), 
      COL37 TIMESTAMP(6), 
      COL38 SMALLINT COMPRESS (0 ,1 ,2 ,3 ,4 ,5 ,6 ,7), 
      COL39 BYTEINT COMPRESS (0 ,1), 
      COL40 TIMESTAMP(6), 
      COL41 VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL42 DECIMAL(18,0) COMPRESS 0. , 
      COL43 INTEGER COMPRESS 0 , 
      COL44 INTEGER COMPRESS 0 , 
      COL45 INTEGER COMPRESS 0 , 
      COL46 INTEGER COMPRESS 0 , 
      COL47 INTEGER COMPRESS 0 , 
      COL48 INTEGER COMPRESS 0 , 
      COL49 INTEGER COMPRESS 0 , 
      COL50 CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS, 
      COL51 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL52 BYTEINT COMPRESS (0 ,1), 
      COL53 BYTEINT COMPRESS (0 ,1), 
      COL54 BYTEINT COMPRESS (0 ,1), 
      COL55 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL56 BYTEINT COMPRESS (0 ,1), 
      COL57 BYTEINT COMPRESS (0 ,1), 
      COL58 BYTEINT COMPRESS (0 ,1), 
      COL59 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL60 BYTEINT COMPRESS (0 ,1), 
      COL61 BYTEINT COMPRESS (0 ,1), 
      COL62 BYTEINT COMPRESS (0 ,1), 
      COL63 BYTEINT COMPRESS (0 ,1), 
      COL64 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL65 BYTEINT COMPRESS (0 ,1), 
      COL66 BYTEINT COMPRESS (0 ,1), 
      COL67 BYTEINT COMPRESS (0 ,1), 
      COL68 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL69 TIMESTAMP(6), 
      COL70 CHAR(2) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL71 DECIMAL(18,2) NOT NULL, 
      COL72 INTEGER COMPRESS (60 ,61 ,62), 
      COL73 TIMESTAMP(6) NOT NULL, 
      COL74 TIMESTAMP(6) NOT NULL, 
      COL75 BYTEINT COMPRESS (0 ,1), 
      COL76 BYTEINT COMPRESS (0 ,1), 
      COL77 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL78 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL79 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL80 VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL81 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL82 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL83 VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL84 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC, 
      COL85 VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC) 
    PRIMARY INDEX NUPI_TABLE_A (COL1) 
    PARTITION BY RANGE_N(COL2 BETWEEN '2009-01-01' AND '2020-01-30' EACH INTERVAL '1' DAY , 
    NO RANGE OR UNKNOWN); 

실제 열 이름 COL1, COL2 변경 ... 등등된다 .

+1

게시물에 두 테이블의'show table ... '을 추가하십시오. –

+0

MAIN_DB.TABLE_A에 몇 개의 컬럼이 있습니까? –

+0

@DuduMarkovitz 둘 다에 대한 쇼 테이블이 추가되었습니다. –

답변

1

나는이 문제가 무엇인지 짐작할 수있다. MAIN_DB.TABLE_A의 열은 TEMP_DB.TABLE_A의 열과 순서가 다릅니다. *을 사용할 때 줄이 바뀌지 않습니다. INSERT은 열 이름이 아니라 열 위치로 이동한다는 것을 기억하십시오.

INSERT를 사용하는 경우, 당신은 항상에가는 INSERT과 값 모두에 열을 나열해야합니다 : 당신은 쿼리가 더 길고 더 복잡 불평 할 수

INSERT INTO MAIN_DB.TABLE_A (COL1, COL2 . . .) 
    SELECT COL1, COL2, COL3..... COL85 
    FROM TEMP_DB.TABLE_A; 

하지만, 정말 꽤 두 테이블 모두에서 열 목록을 쉽게 얻을 수 있습니다. 그러면 코드가 훨씬 강력 해집니다.

+0

열의 순서는 같습니다. ** 테이블 정의 비교 ** 너머 ** –

+3

다른 데이터 형식? 'SELECT *'는 일회성 이상으로 악조건입니다. – Andrew

+0

@PirateX Gordon의 진단 내용이 정확하지 않을 수 있습니다. 그러나 그의 솔루션은 100 % 정확합니다 : "INSERT를 사용할 때는 항상 INSERT 및 들어갈 값 모두에 대해 열을 나열해야합니다." Select *를 사용하는 것은 많은 코딩 방법이 있기 때문에 실제로 코딩 할 수 없습니다. –

0

문제점을 발견했습니다.

테이블이 변경되어 다시 되돌아 왔습니다. 그러나보기에는 이것으로 새로 고침되지 않았습니다.

예 :

처음에 표
COL1 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, 
COL2 DATE FORMAT 'yyyy-mm-dd', 
COL3 VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC 

다음은

COL1 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, 
COL2 DATE FORMAT 'yyyy-mm-dd', 
COL3 VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC, 
NEW_COLUMN VARCHAR(100) 

로 변경되었습니다이고 뷰가 다시 되 돌린 후 갱신되지 않았다 그러나

COL1 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, 
COL2 DATE FORMAT 'yyyy-mm-dd', 
COL3 VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC 

로 다시 복귀했다.

그래도 모든 것이 어떻게되어야하는지. 보기는 모든 소란을 만들고 있었다. 나는 그 견해를 새롭게했고 그것은 잘 돌아갔다.