0

私は CF 開発を独学で学んでおり、学習しながらテスト用に共有 CF ホスト サイトを使用しています。

約 15 列に 2500 以上のデータ レコードを含むスプレッドシートがあります。スプレッドシートには、このアプリケーションの基礎にとって重要なデータが含まれています。オフラインで維持され、定期的に を使用してサーバーにアップロードされますcffile。アップロード後、スプレッドシートは MySQL テーブルに 1 行ずつインポートされます。

問題は、完全に時間がかかりすぎることです。たとえば、現在実行中です。過去 43 分間に、2500 レコードのうち 192 レコードのみが MySQL テーブルに追加されました。これを行うより効率的な方法はありますか?

以下のコードを確認すると、内部でcfloopcfspreadsheet タグが実行され、現在の行が取得されます。次に、その行を「CSV」データとして MySQL テーブルに追加します。

これをより効率的に行う方法について何か提案はありますか?


<cfloop index="RecordNumber" from="2" to="#Records#" step="1"> 

    <cfspreadsheet action="read"
                format="csv"
                name="siteinfo"
                src="#floc#"
                headerrow="1"
                rows="#RecordNumber#" 
                columns="1-7,15,16,22,23"
                >

    <cfset ColumnCount = ListLen(siteinfo)>
    <cfset CSVSiteData = #siteinfo#>
    <cfset EntryType = "Site_Data">


    <cfquery name="Insertsite" datasource="TechData">
        INSERT INTO sitelist (EntryType, CSVSiteData, DateInserted)
        VALUES ('#EntryType#', '#CSVSiteDataf#', '#DateInserted#')
    </cfquery>

</cfloop>
4

2 に答える 2

1

1行を取得するためだけに、反復ごとにXLSファイル全体を読み取っています。ファイルを 1 回(ループの前に)読み込んでから、その行をループします。

于 2014-09-13T23:47:03.423 に答える