SQLのテーブルに挿入する必要があるテキストファイルがあります。私は自分のテキストファイル名が格納されている別のテーブルを持っています。私はそのテーブルから名前をつかみ、特定のフォルダからファイルを取得するためにfileOpen()
を使用しなければなりません。私がそのステップを完了した後、次のステップを行う最良の方法が何であるかを決めるのに問題があります。だから私はfileReadLine()
各テキストファイルの行のコンテキストを取得するために使用する必要があります。また、最初の行には列名だけが含まれているので、これを読んではいけません。二番目に、ファイルの最後に一度着いたらチェックしなければなりません。最後に、テーブルにINSERTをループして実行する必要があります。私はこれを行うための新しい方法があるのだろうかと思っていましたか?現在のコードには2つのcfloops
があり、非常に非効率的です。ここに私の現在のコードは次のとおりです。ColdFusionとSQLを使用してテキストファイルを挿入する最も良い方法は?
<!--- 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>
私は挿入する必要があり、その後、挿入を行うために別のループを実行するために、すべての要素を持つ配列を作成する別のループをやって考えていました。私はこの場合に最良のアプローチが何であるか分かりません。誰か他の方法を知っているなら、私に知らせてください。おかげ
ほとんどのデータベースにはテキストファイルを読み込むためのツールがありますが、これは通常はループ処理よりもはるかに効率的です。これらのツールは、DBMS固有のものです。 MySQL - LOAD DATA、SQL Server - BULK INSERTなどで検索してください。たくさんの例があります。 (データベースに関する質問があれば、常にあなたのDBMSとバージョンが含まれています) – Leigh