데이터 테이블 결과 집합을 기존 Oracle 테이블에 쓰기<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕,
저는 JMP 스크립팅이 처음입니다. Oracle 테이블에서 읽을 스크립트를 만들었습니다. Fit_Model을 데이터에 적용하고(Oracle에서 복제할 수 없으므로 JMP가 필요함) Oracle에 다시 작성하려고 합니다.
현재 dt3<
이렇게 하면 테이블이 생성되지만 새 테이블을 생성하는 대신 기존 테이블에 INSERT INTO할 수 있어야 합니다.
제가 JMP 스크립트를 처음 접했고 JMP 스크립트 설명서에서 답을 찾을 수 없기 때문에 도움을 주시면 대단히 감사하겠습니다.
감사해요,
Re: 데이터 테이블 결과 세트를 기존 Oracle 테이블에 쓰기새로운 정보로 이 스레드를 업데이트하고 싶었습니다.Oracle 테이블에 여러 번 삽입(~8000)을 시도했는데 한 번에 하나의 레코드를 삽입할 때 성능 문제가 발생했습니다."트릭"은 다음을 사용하는 것입니다. 모두 삽입 명령.아래 코드는 한 번에 200개의 레코드를 삽입합니다.
dt = 데이터 테이블 ( "랜덤데이터" ) ;
dsn_string = "Driver={OraClient11g64의 Oracle};Dbq=<데이터베이스>;UID=<스키마>;PWD=<비밀번호>;" ;
dbc = 데이터베이스 연결 생성 ( dsn_string ) ;
sql_statement =
"\[CREATE TABLE <스키마>.FYI_RANDOM
(ID 번호,
RAND_INTEGER 숫자,
RAND_NUMBER 숫자,
RAND_DATETIME 날짜,
RAND_STRING VARCHAR2(80))]\" ;
SQL 실행 ( dbc , sql_statement ) ;
// 테이블에서 행 제거(반복 테스트를 위해)
SQL 실행 ( dbc , "테이블 <스키마>.fyi_random 자르기" ) ;
t2 = 틱 초 () ;
max_inserts = 200 ; // 한 번에 200개 삽입 수행
sql_statement = "모두 삽입" ;
~을 위한 ( 나 = 1 , 나 <= nrows ( dt ) , 나 ++,
IDC = dt : ID [ 나 ] ;
rand_integerc = dt : rand_integer [ 나 ] ;
rand_numberc = dt : rand_number [ 나 ] ;
rand_datetimec = 체재 ( dt : rand_datetime [ 나 ] , "m/d/yh:m:s" ) ;
rand_stringC = dt : rand_string [ 나 ] ;
sql_statement = sql_statement || 평가 (
" INTO <스키마>.FYI_RANDOM(ID, RAND_INTEGER, RAND_NUMBER, RAND_DATETIME, RAND_STRING)
VALUES(^idc^, ^rand_integerc^, ^rand_numberc^,
to_date('^rand_datetimec^', 'MM/DD/YYYY HH:MI:SS AM'),
'^rand_stringc^')
" ) ;
만약에 ( 모드 ( 나 , max_inserts ) == 0 ,
// 이상합니다 - INSERT ALL INTO는 끝에 SELECT 문이 필요합니다. 더미 문을 사용하세요.
sql_statement = sql_statement || " 듀얼에서 1 선택" ;
SQL 실행 ( dbc , sql_statement ) ;
sql_statement = "모두 삽입" ;
) ;
만약에 ( 모드 ( 나 , 200 ) == 0 ,
표제 ( "삽입" || 숯 ( 나 ) || "기록" ) ;
기다리다 ( 0 ) ;
) ;
) ;
// 할 일이 남아 있는지 확인
만약에 ( sql_statement != "모두 삽입" ,
SQL 실행 ( dbc , sql_statement ) ;
) ;
데이터베이스 연결 닫기 ( dbc ) ;
t1 = 틱 초 () ;
인쇄 ( t1 - t2 ) ;
표제 ( 제거하다 ) ;
기다리다 ( 0 ) ;
그만큼 모두 삽입 명령은 실제로 새로운 것이 아닙니다. 온라인에서 찾은 예제는 Oracle 9에서 작동하는 것을 보여줍니다. 다음은 자세한 정보가 있는 링크입니다.
https://www.techonthenet.com/oracle/questions/insert_rows.php
sql - Oracle에서 다중 행 삽입을 수행하는 가장 좋은 방법은 무엇입니까? - 스택 오버플로
Re: 데이터 테이블 결과 세트를 기존 Oracle 테이블에 쓰기이것은 효과가 있었다!!
도움을 주셔서 정말 감사합니다. 정말 감사합니다.
Re: 데이터 테이블 결과 세트를 기존 Oracle 테이블에 쓰기JMP 테이블 열이 숫자일 수 있습니까?이것이 오류 메시지에 표시된 것입니다.또한 일부 열에 대해 일부 작은따옴표가 누락되었습니다.CHAR 함수로 각 열을 래핑해 보십시오.그래도 작동하지 않으면 sql_statement 변수를 인쇄하십시오.
현재 데이터 테이블 ( dt ) ;
dbc = 데이터베이스 연결 생성 (
"DRIVER={instantclient11_1의 Oracle};DBQ=DBASE;UID=UNAME;SPWD=PWORD;"
) ;
을 위한 ( 나 = 1 , 나 <= N 행 ( dt ) , 나 ++,
sql_statement = "SCHEMA.TBL_TABLE에 삽입" ||
"(COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8) " ||
"값(" || "'" ||
숯 ( 열 ( 1 )[ 나 ]) || "', '" || 숯 ( 열 ( 2 )[ 나 ]) || "', '" ||
숯 ( 열 ( 삼 )[ 나 ]) || "', '" || 숯 ( 열 ( 4 )[ 나 ]) || "', '" ||
숯 ( 열 ( 5 )[ 나 ]) || "', '" || 숯 ( 열 ( 6 )[ 나 ]) || "', '" ||
숯 ( 열 ( 7 )[ 나 ]) || "', '" || 숯 ( 열 ( 8 )[ 나 ]) || "') " ;
인쇄 ( sql_statement ) ;
SQL 실행 ( dbc , sql_statement ) ;
) ;
데이터베이스 연결 닫기 ( dbc ) ;
Re: 데이터 테이블 결과 세트를 기존 Oracle 테이블에 쓰기안녕,
나는 이것으로 작업을 시도했지만 연결로 인한 오류가 발생했습니다.
테이블의 모든 열은 VARCHAR2이며 Oracle 개발자의 관점에서 연결이 괜찮아 보입니다.
저를 결승선에 올려놓도록 도와주실 수 있나요?
인수는 'Concat' 액세스 또는 평가에서 문자여야 합니다. 잘못된 인수( 열( 5 ) )
다음 스크립트에서 /*###*/로 표시된 오류
현재 데이터 테이블( dt );
dbc = 데이터베이스 연결 생성(
"DRIVER={instantclient11_1의 Oracle};DBQ=DBASE;UID=UNAME;SPWD=PWORD;"
);
For( i = 1, i <= N 행( dt ), i++,
sql_statement = "SCHEMA.TBL_TABLE에 삽입" || /*###*/
"(COL1, COL2, COL3, COL4, COL5, COL6, COL7, COL8) " || /*###*/
"VALUES(" || /*###*/"'" || /*###*/열( 1 ) || /*###*/"', " || /*###*/
"'" || /*###*/열( 2 ) || /*###*/"', " || /*###*/"'" || /*###*/
열( 3 ) || /*###*/"', " || /*###*/컬럼( 4 ) || /*###*/", " || /*###*/
열( 5 ) || /*###*/", " || /*###*/열( 6 ) || /*###*/", " || /*###*/
열( 7 ) || /*###*/", " || /*###*/"'" || /*###*/컬럼( 8 ) || /*###*/
"') " /*###*/;
SQL 실행( dbc, sql_statement );
);
데이터베이스 연결 닫기(dbc);
Re: 데이터 테이블 결과 세트를 기존 Oracle 테이블에 쓰기제라드,
거의 다 왔습니다.여러 레코드를 추가하려면 JMP 테이블의 행을 반복하고 별도의 INSERT 문을 실행해야 합니다.
dt = rftmdl [ 1 ][ 테이블 박스 ( 삼 )] << 결합된 데이터 테이블 만들기 ( "Tbl_결합" ) ;
현재 데이터 테이블 ( dt ) ;
dbc = 데이터베이스 연결 생성 ( "DRIVER={instantclient11_1의 Oracle};DBQ=DBNAME;UID=USER;SPWD=PASS;" ) ;
~을 위한 ( 나 = 1 , 나 <= nrows ( dt ) , 나 ++,
sql_statement =
"SCHEMA.TBL_TABLE에 삽입" ||
"(col1, col2, col3, col4, col5, col6, col7, col8) " ||
"값(" ||
"'" || 열 ( 1 )[ 나 ] || "', " ||
"'" || 열 ( 2 )[ 나 ] || "', " ||
"'" || 열 ( 삼 )[ 나 ] || "', " ||
열 ( 4 )[ 나 ] || ", " ||
열 ( 5 )[ 나 ] || ", " ||
열 ( 6 )[ 나 ] || ", " ||
열 ( 7 )[ 나 ] || ", " ||
"'" || 열 ( 8 )[ 나 ] || "') " ;
// JMP는 삽입 문에 커밋을 추가합니다.
SQL 실행 ( dbc , sql_statement ) ;
) ;
데이터베이스 연결 닫기 ( dbc ) ;
개별 테이블 셀을 참조하려면 다음과 같은 구문을 사용할 수 있습니다.
열 ( 1 )[ 삼 ] ; // 현재 데이터 테이블의 첫 번째 열, 행 3의 셀을 참조합니다.
열 ( dt , 5 )[ 7 ] ; // 변수 dt가 참조하는 테이블의 5열 7행 셀
열 ( dt , "세계" )[ 2 ] ; // dt가 참조하는 테이블에서 World라는 열, 행 2의 셀.이것은 내가 가장 자주 사용하는 구문입니다
: 세계 [ 2 ] ; // 현재 데이터 테이블에서 열 World, 행 2의 셀.
행운을 빌어요!
베드로
Re: 데이터 테이블 결과 세트를 기존 Oracle 테이블에 쓰기답장을 보내 주셔서 감사합니다.
내가 입력한 값이 데이터 테이블에서 가져온 값임을 어떻게 지정할 수 있습니까?
column(1) 등을 사용하여 간단히 시도했지만 작동하지 않습니다. 나는 PL/SQL 배경에서 왔기 때문에 내 두뇌는 dt.column(1)이라고 말하지만 이것은 작동하지 않습니다.
설명해 주시겠습니까?
dt=rftmdl[1][Table Box(3)] << make Combined datatable("Tbl_Combinied");
sql_statement =
"SCHEMA.TBL_TABLE에 삽입" ||
"(col1, col2, col3, col4, col5, col6, col7, col8)" ||
"값(" ||
"'" || 열(1) || "', " ||
"'" || 열(2)|| "', " ||
"'" || 열(3)|| "', " ||
열(4)|| "," ||
열(5)|| "," ||
열(6)|| "," ||
열(7)|| "," ||
"'" || 열(8) || "') ";
dbc = 데이터베이스 연결 생성("DRIVER={instantclient11_1의 Oracle};DBQ=DBNAME;UID=USER;SPWD=PASS;");
// JMP는 삽입 문에 커밋을 추가합니다.
SQL 실행(dbc, sql_statement);
데이터베이스 연결 종료(dbc);
또한 유용한 링크나 JMP 스크립트 가이드를 알고 있다면 모든 도움을 받을 수 있습니다.
다시 한번 감사드립니다.
Re: 데이터 테이블 결과 세트를 기존 Oracle 테이블에 쓰기JMP 10을 사용 중인 경우 레코드를 삽입하는 방법은 다음과 같습니다.DSN_STRING은 내 데이터베이스에 대한 연결 문자열입니다.또한 SQL 문자열은 주석 없이 하나의 연속 라인에 있어야 합니다.
sql_statement =
"myschema.mytable에 삽입" ||
"(one_col, second_col, third_col) " ||
"값(" ||
"'" || 첫 번째 값 || "', " ||
"'" || 초_값 || "', " ||
"'" || 세 번째_값 || "') " ;
dbc = 데이터베이스 연결 생성 ( dsn_string ) ;
// JMP는 삽입 문에 커밋을 추가합니다.
SQL 실행 ( dbc , sql_statement ) ;
데이터베이스 연결 닫기 ( dbc ) ;
// JMP 8 또는 9에서는 다음을 사용하십시오.
// 데이터베이스 열기(dsn_string, sql_statement);