SQL のテーブルの 1 つに挿入する必要があるテキスト ファイルがいくつかあります。テキストファイル名が保存されている別のテーブルがあります。そのテーブルから名前を取得し、を使用しfileOpen()
て特定のフォルダーからファイルを取得する必要があります。そのステップを終えた後、次のステップを実行する最善の方法は何かを決定する問題があります。したがってfileReadLine()
、テキスト ファイルの各行のコンテキストを取得するために使用する必要があります。また、列名のみが含まれているため、最初の行を読むべきではありません。次に、ファイルの最後に到達したら確認する必要があります。最後に、ループしてテーブルに INSERT を実行する必要があります。これを行う新しい方法はありますか?私の現在のコードには 2 つcfloops
あり、非常に非効率に見えます。これが私の現在のコードです:
<!--- Grab stuff from File Table. --->
<cfquery datasource="test" name="myQuery1">
SELECT *
FROM FilesTxt
</cfquery>
<cfloop query="myQuery1">
<!--- Read File --->
<cfset dataFile = fileOpen(here is my path&"\"&#FileName#, "read" ) />
<cfset line = fileReadLine( dataFile ) />
<!--- Loop to see if hit the end of file, if not, read next line --->
<cfloop condition="!fileIsEOF( dataFile )">
<cfset line = fileReadLine( dataFile ) />
<cfif trim(line) NEQ "">
<cfset line = #Replace(line,"'","","ALL")#>
<cfset line = #Replace(line,'"',"","ALL")#>
<!--- Build array of junk in the file --->
<cfset sList = ListToArray(line, chr(9),'yes')>
<cftry>
<cfquery datasource="test" name="Insert">
//Here is my Insert statement
</cfquery>
</cftry>
</cfif>
</cfloop>
</cfloop>
挿入する必要があるすべての要素を含む配列を作成し、別のループを実行して挿入を行う別のループを実行することを考えていました。この場合、何が最善のアプローチなのかわかりません。他の方法を知っている人がいたら教えてください。ありがとう