Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用coldfusion将excel电子表格上载到现有表中?_Sql Server_Coldfusion_Coldfusion 10 - Fatal编程技术网

Sql server 如何使用coldfusion将excel电子表格上载到现有表中?

Sql server 如何使用coldfusion将excel电子表格上载到现有表中?,sql-server,coldfusion,coldfusion-10,Sql Server,Coldfusion,Coldfusion 10,如何使用ColdFusion10将excel电子表格上载到现有表中? 我有一个已保存的excel电子表格,还有输出我所需数据的CFQuery(“myQuery”)。如何循环查询并导入到现有表中 数据库:MS SQL Server 到目前为止,我知道我需要循环查询我拥有的所有数据 <cffunction name="uploadDogSheet" access="public" output="yes" returnType="void" hint="upload the

如何使用ColdFusion10将excel电子表格上载到现有表中? 我有一个已保存的excel电子表格,还有输出我所需数据的CFQuery(“myQuery”)。如何循环查询并导入到现有表中


数据库:MS SQL Server

到目前为止,我知道我需要循环查询我拥有的所有数据

    <cffunction name="uploadDogSheet" access="public" output="yes" returnType="void" 
    hint="upload the spreadSheet">

<cfset currentRowChecked = "1"> 
<cfset lastRow = numberOfRows> <!-- sets the number of rows that it will validate-->


    <cfspreadsheet
    action="read"
    src="#SESSION.theExcelFile#"
    headerrow= "1"
    excludeHeaderRow = "true"
    query = "allDoggyData"
    rows = "1-#lastRow#" />     


    <cfscript>    

        allDataQuery = new Query(
        sql ="SELECT * FROM allDoggyData",
        dbtype = "query",
        allData = allData);
        allDataQueryResult = allDataQuery.execute().getResult();
    </cfscript> 




    <cfloop query="allDoggyData">

<CFQUERY DATASOURCE="#mydatabase#" name="input_req">
insert into temp_dog_upload (dogNameColumn, dogBreedColumn, dogColor)
          values
(
<cfqueryparam value="#allDoggyData.dogNameExcelColumn#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#allDoggyData.dogBreedExcelColumn#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#allDoggyData.dogColorExcelColumn#" cfsqltype="cf_sql_varchar">
)               
</CFQUERY>

</cfloop>

<p>The sheet has been uploaded!<p></span>

allDataQuery=新查询(
sql=“从allDoggyData中选择*”,
dbtype=“查询”,
所有数据=所有数据);
allDataQueryResult=allDataQuery.execute().getResult();
插入临时上传(dogNameColumn、dogBreedColumn、dogColor)
价值观
(
,
,
)               
工作表已经上传

有几种方法可供选择。它们都有一个非常重要的共同点。首先将电子表格数据放入暂存表中。首先根据需要进行处理和验证,然后从暂存表写入主表

方法1是让您的网页接受来自用户的文件,并将它们放在某个地方。然后,编写一个SSIS包来查找这些文件,将它们加载到您的暂存表中,并继续执行,直到作业完成。然后编写一个代理程序来计划此作业以适当的时间间隔运行

方法2是使用continue with ColdFusion。您已经将电子表格读入查询。循环该查询以填充暂存表并继续处理

每种方法都需要注意几件事。对于方法1,可能要处理多个文件。你的包裹必须处理这个问题。使用方法2,可能有两个用户同时处理文件。你必须确保这两个请求不会相互干扰

关于“如何循环查询并导入到现有表中?”的具体问题,如下所示:

<cfoutput query="yourquery">
<cfquery datasource="something">
insert into atable
(fields go here)
values
(values, using cfqueryparam go here)
</cfquery>
</cfoutput>

插入到atable中
(字段位于此处)
价值观
(值,使用cfqueryparam转到此处)

你的问题很简单。将电子表格上传到服务器,然后使用cfspreadsheet读取

<cfspreadsheet  
action="read" 
src = "filepath" 
columns = "range" 
columnnames = "comma-delimited list" 
excludeHeaderRow = "true | false" 
format = "CSV|HTML" 
headerrow = "row number" 
name = "text" 
query = "query name" 
rows = "range" 
sheet = "number" 
sheetname = "text"> 

然后简单地循环遍历您在cfspreadsheet中定义的查询

<cfloop query="queryname">

    <cfquery name="" datasource="">
       INSERT INTO ....
    </cfquery

</cfloop>

插入。。。。

你在使用什么数据库?MSSQL、MYSQL或?数据库:MS SQL Server为什么不在Management Studio中使用“导入数据”任务?我有一个网站上传界面,用户可以上传他们的电子表格。我正在使用CFSPREADSHEET阅读该电子表格,还有一个包含所有数据的CFQUERY。您正在假设必须循环,但情况可能并非如此。首先搜索“sql server导入电子表格”。有许多选项,其中大多数不涉及循环。例如,出现了一个5秒钟的搜索,这是我目前的情况,但是我得到一个“执行数据库查询时出错”错误:插入temp_dog_upload(dogname列,dogBreedColumn)值()你能用正确的错误和你使用的正确代码编辑你的问题吗?包括循环和cfspreadsheet?这是我目前拥有的,但是我得到一个“执行数据库查询时出错”错误:插入temp_dog_upload(dogname column,dogBreedColumn)值()我没有回答你的问题,因为我需要它工作。没有回答是可以的,但你的理由是无效的。带有查询属性的cfoutput实际上与带有查询属性的cfloop相同。如果使用cfloop,仍然需要cfoutput标记来访问该查询中的值。如果采用这种方法,请将cfloop块放在cfoutput块中。否则,您将在循环中做额外的工作。如果您所做的只是插入记录,那么您就不需要cfoutput。也就是说,cfloop和cfoutput没有区别。您最初的insert查询有一个语法错误(额外的逗号),您很可能已修复该错误。我已修复了逗号。这就是解决语法错误的原因。这个问题与使用cfoutput无关,除非页面中有其他代码没有显示给我们。