2016-11-11 2 views
0

테이블에 하드 코딩 된 데이터를 추가해야하는 시나리오가 나타났습니다. 수천 개의 항목이 있습니다. 한 번에 쿼리를 통해 추가 할 수있는 방법이 있습니까? ,,, "1777519577", "1777725624", "1777311315",한 테이블에 하드 코드 데이터 추가

'1777193992'1777125359 '

'1779312636 ' '1771416476 '1777535342'데이터는 후술 형식 같다

SELECT '1777193992', '1777535342', '1777519577', '1777725624', '1777311315', '1771416476', '1779312636', '1777125359' FROM dual; 

을하지만 행 나에게 데이터를주고 :

나는이 시도했다. 데이터를 열에 삽입하려고합니다.

+0

수천 가지 값의 출처는 어디입니까? 파일이 있다면 외부 테이블 또는 SQL \ * Loader가 옵션이됩니다. 그렇지 않으면 다른 메소드가 있지만 값 목록을 약간 조작해야합니다. (또한 대상 열 데이터 형식은 무엇입니까? 모든 예제는 숫자이지만 문자열로 처리하고 있습니까?) –

답변

2

각 값에 대해 하나씩 INSERT 명령을 사용하여 스크립트를 만듭니다.
그런 다음이 스크립트를 원하는 편집기에로드하고 한 번에 실행하십시오.

그런 경우 가장 많이 사용되는 방법은 스프레드 시트를 사용하여 SQL 명령을 생성하는 것입니다.
스프레드 시트를 사용하면 몇 분 안에 수십만 개의 값을위한 스크립트를 생성 할 수 있습니다. (구글 시트를 사용)

간단한 예 : ="INSERT INTO tablename(columnname) VALUES('"&A1&"');"

  • 복사 B 열의 나머지 셀 B1 셀에서이 formua :

    • 값이 수식을 입력 B1 셀의 열
    • 열 B를 선택하고 텍스트 편집기에 내용을 복사하고 마지막에 COMMIT;을 추가하십시오. 이것은 "한번에"실행할 준비가 된 SQL 스크립트입니다 - SQL Developer에로드하고 F5를 누르십시오.
    • ,210

    enter image description here

    INSERT INTO tablename(columnname) VALUES('1777193992'); 
    INSERT INTO tablename(columnname) VALUES('1777535342'); 
    INSERT INTO tablename(columnname) VALUES('1777519577'); 
    INSERT INTO tablename(columnname) VALUES('1777725624'); 
    INSERT INTO tablename(columnname) VALUES('1777311315'); 
    INSERT INTO tablename(columnname) VALUES('1771416476'); 
    INSERT INTO tablename(columnname) VALUES('1779312636'); 
    INSERT INTO tablename(columnname) VALUES('1777125359'); 
    COMMIT; 
    
  • 0

    당신이 생성하고 듀얼에서 각각의 값을 선택하는 것과 하나의 삽입으로 데이터를 결합 할 수있는 몇 가지 방법이있다 개별 INSERT 문을 많이 실행하지 않으려면 함께 그들을 unioning :

    insert into tablename(columnname) 
    select '1777193992' from dual 
    union all select '1777535342' from dual 
    union all select '1777519577' from dual 
    union all select '1777725624' from dual 
    union all select '1777311315' from dual 
    union all select '1771416476' from dual 
    union all select '1779312636' from dual 
    union all select '1777125359' from dual 
    /
    

    또는 the insert all syntax로를하는 약간 남용 멀티 테이블 삽입 아이디어 :

    insert all 
        into tablename(columnname) values ('1777193992') 
        into tablename(columnname) values ('1777535342') 
        into tablename(columnname) values ('1777519577') 
        into tablename(columnname) values ('1777725624') 
        into tablename(columnname) values ('1777311315') 
        into tablename(columnname) values ('1771416476') 
        into tablename(columnname) values ('1779312636') 
        into tablename(columnname) values ('1777125359') 
    select * from dual 
    /
    

    @krokodilko가 보여준 것을 수정하여 Excel에서 생성 할 수 있습니다.

    개별 값으로 채울 컬렉션을 만들 수도 있습니다. 여기에 built-in odcivarchar2list collection type를 사용하여 :

    insert into tablename(columnname) 
    select column_value 
    from table(sys.odcivarchar2list('1777193992', '1777535342', '1777519577', 
        '1777725624', '1777311315', '1771416476', '1779312636', '1777125359')) 
    /
    

    을 ... 당신은 PL/SQL에서 컬렉션을 채워 해결할 수있는, more than 1000 entries listed like that에 문제가있을 수 있지만 -이 경우 덜 매력적이 방법을합니다.

    그러나 값 목록이있는 경우 external table 또는 SQL*Loader을 통해로드하거나 SQL Developer의 가져 오기 메커니즘을 통해로드하는 것이 훨씬 쉽습니다.

    자신의 응용 프로그램에 목록이있는 경우 배열에서 컬렉션을 채운 다음 위의 table() 버전을 사용할 수 있지만 사용하는 언어와 드라이버에 따라 다릅니다.