2017-05-11 2 views
0

XFS 파일을 쿼리로 읽는 데 CFSPREADSHEET을 사용하고 있습니다. 그런 다음 필요에 따라 열을 재정렬하십시오. 그러나, 내가 사용하고있는 질의 - 쿼리는 알파벳 순서를 그대로 유지합니다.Q-of-Q가 열 순서를 고려하지 않음

XLS 파일에는 올바른 순서로 필드가 있지만 쿼리로 변환하면 필드의 알파벳순으로 정렬됩니다.

나는 결과를 this nifty UDF을 사용하여 CSV에 출력하고 q-of-q가 내 요청을 따르지 않는다는 것을 증명하는 필드는 여전히 알파벳순으로 표시됩니다.

이 문제를 해결하기 위해 q-of-q를 사용하여 올바른 순서로 열을 다시 포맷하려고합니다.

<cfspreadsheet action="read" src="#local.tmpPath##local.tmpFile#" excludeheaderrow="true" headerrow="1" sheet="1" query="local.qTemp" /> 

<!--- Change column order around as necessary ---> 
<cfquery name="local.qTemp" dbtype="query"> 
    SELECT 
      Name, Address, City 
    FROM 
      [local].qTemp 
</cfquery> 

<cfset local.newCSV = QueryToCSV(
    query = local.qTemp, 
    fields = local.qTemp.columnlist, 
    createHeaderRow = true, 
    delimiter = '|' 
) /> 

<cffile action="write" charset="windows-1252" file="#local.tmpPath#foo.csv" output="#replace(local.newCSV, """", "", "ALL")#" nameconflict="overwrite" /> 

I 출력은 열 순서 대신 질의 순서

  • Address,City,Name

:

  • Name,Address,City

나는이 주제에 대해 post을 읽었지만 특별히 읽지 않는 한 내 문제를 구체적으로 다루지 않았다.

+0

에서 자신의 목록을 작성 : 당신과 같은 다른 기술을 사용한다 "진짜"순서를 얻으려면 열 순서가 중요한 이유는 무엇입니까? –

+0

SQL Server에 대량 삽입 방법을 사용하면 열이 특정 순서로 존재해야한다고 들었습니다. 나는 지시에만 따르고있다. –

+1

쿼리의 데이터로 대량 삽입 메소드가 호출되는 방식은 무엇입니까? 여기서 내가 알아야 할 것은 특정 열 이름을 사용하여 쿼리 결과를 출력 할 때 순서를 정의 할 수 있다는 것입니다. –

답변

2

QoQ은 실제로 문제와 관련이 없습니다. 원래 쿼리에서도 동일한 문제가 발생합니다. 죄송 합니다만 query.columnList 항상 알파벳순으로 열을 나열합니다. 그것은 많은 CF dev의 오랫동안 서투른 불만입니다.

  • 문서화되지 않은 query.getColumnNames() 방법 (OR)
  • GetMetaData(query) 결과

    columns = []; 
    getMetaData(qry).each(function(elem,index){ 
        arrayAppend(columns, elem.name); 
    }); 
    writeDump(var=arrayToList(columns), label="Real Column Order"); 
    
-1

당신은 사용할 수 있습니다

<cfspreadsheet action="write" query="yourqueryname" filename="yourfilename">

출력됩니다 쿼리를 선택 성명의 열 순서와 스프레드 시트 (주석에서 ...)

관련 문제