2012-03-22 5 views
1

ColdFusion MX 7에서 MySQL 5.0의 테이블을 업데이트하려고 시도했지만 쿼리는 첫 번째 레코드 만 업데이트/추가하고 나머지 60,000 개의 레코드는 업데이트/추가하지 않습니다.ColdFusion MX 7에서 mysql 테이블을 업데이트하려고 시도했습니다.

<cfquery name="count" datasource="voyager"> 
SELECT 
     PATRON.PATRON_ID, 
     PATRON.HISTORICAL_CHARGES, 
     PATRON.HISTORICAL_BOOKINGS, 
     PATRON.HISTORICAL_DISTRIBUTIONS, 
     PATRON.HISTORICAL_SHORT_LOANS, 
     PATRON.HISTORICAL_CHARGES_UB, 
     PATRON.HISTORICAL_REQUESTS_UB 
FROM PATRON 
</cfquery> 


<cfquery name="update" datasource="patrons"> 
    <cfoutput> 
    REPLACE INTO patrondailyusecounttotals (PATRON_ID, HISTORICAL_CHARGES) 
    VALUES ('#count.PATRON_ID#', '#count.HISTORICAL_CHARGES#') 
    </cfoutput> 
</cfquery> 

답변

1

당신은 루프를 사용해야합니다 : <cfqueryparam>를 사용하여 여기에 권장되는 방법입니다

<cfquery name="count" datasource="voyager"> 
    SELECT 
    PATRON.PATRON_ID, 
    PATRON.HISTORICAL_CHARGES, 
    PATRON.HISTORICAL_BOOKINGS, 
    PATRON.HISTORICAL_DISTRIBUTIONS, 
    PATRON.HISTORICAL_SHORT_LOANS, 
    PATRON.HISTORICAL_CHARGES_UB, 
    PATRON.HISTORICAL_REQUESTS_UB 
    FROM 
    PATRON 
</cfquery> 

<cfloop query="count"> 
    <cfquery name="update" datasource="patrons"> 
    REPLACE INTO patrondailyusecounttotals (PATRON_ID, HISTORICAL_CHARGES) 
    VALUES (
     <cfqueryparam value="#PATRON_ID#" cfsqltype="CF_SQL_VARCHAR">, 
     <cfqueryparam value="#HISTORICAL_CHARGES#" cfsqltype="CF_SQL_VARCHAR"> 
    ) 
    </cfoutput> 
</cfloop> 

참고. 첫 번째 이후의 각 루프 반복에서 매번 전체 SQL 코드를 전송하는 대신 매개 변수 값만 서버에 전송되므로 "내부 쿼리"가 훨씬 빨라질 것입니다.


편집

대답의 원래 버전은 다음을 권장하지만, 분명 그건 별도의 데이터베이스 서버를 포함하는 상황에서 충분하지 않습니다.

<cfquery name="update" datasource="patrons"> 
    REPLACE INTO 
    patrondailyusecounttotals (PATRON.PATRON_ID, HISTORICAL_CHARGES) 
    SELECT 
    PATRON_ID, HISTORICAL_CHARGES 
    FROM 
    PATRON 
</cfquery> 
+0

감사합니다. 그러나 어떻게해야 할 지 모르겠지만 하나의 컴퓨터에는 Oracle 테이블이 있고 다른 컴퓨터에는 mysql 테이블이 있습니다. 내가 coldfusion을 사용하고 있기 때문에 두 사이트에서 데이터를 함께 가져올 수있는 유일한 방법이기 때문입니다. – schwartzray

+0

@schwartzray 아! 이것은 중요한 정보입니다. :) 나는 그것들이 두 개의 분리 된 데이터 소스라는 것을 깨닫지 못했습니다. 좋아요. 그러면 루프가 필요할 것입니다. 수정 된 답변을 참조하십시오. – Tomalak

+0

정말 고마워요! 그 트릭을 했어!/Ray – schwartzray

관련 문제