将数据从另一个数据库 table 插入一个数据库 table –(经典 ASP)

Inserting data into an db table from another db table – (Classic ASP)

项目详情:经典 ASP 和 SQL 2012。

我有一个 Excel 文件,只有两列(“F1”和“F2”),包含大约 3000 条记录。

我还有一个 SQL2012 table 名为“BACKUPP”的 3 列(“ID”“KODIKOS”“APOTHEMA”)。

我想将Excel中的所有数据插入“BACKUPP”table。 我已经通过以下方式成功连接到 Excel 和 sql 数据库:

对于EXCEL:

Dim RS_EXCEL
Dim RS_EXCEL_cmd
Dim RS_EXCEL_numRows
Set RS_EXCEL_cmd = Server.CreateObject ("ADODB.Command")
RS_EXCEL_cmd.ActiveConnection = MM_connnectt_STRING
RS_EXCEL_cmd.CommandText = "SELECT * FROM ['Website stock$']" RS_EXCEL_cmd.Prepared = true
Set RS_EXCEL = RS_EXCEL_cmd.Execute
RS_EXCEL_numRows = 0

使用以下连接字符串:

MM_connnectt_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\OLA\SITES\SuperCleanerWINHOST\BACK\file.xls;Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"";"

对于 SQL 数据库:

Dim RS_SQL
Dim RS_SQL_cmd
Dim RS_SQL_numRows
Set RS_SQL_cmd = Server.CreateObject ("ADODB.Command")
RS_SQL_cmd.ActiveConnection = MM_syndesi_STRING
RS_SQL_cmd.CommandText = "SELECT * FROM dbo.BACKUPP" 
RS_SQL_cmd.Prepared = true
Set RS_SQL = RS_SQL_cmd.Execute
RS_SQL_numRows = 0

使用以下连接字符串:

MM_syndesi_STRING = "dsn=DSN_supercle_dsn;uid=DB_107185_cleanerdb_user;pwd=XXXXX;"

我的两个连接在本地都很完美。我也在线测试过,也没有任何问题。

所以我可以毫无问题地从 Excel & SQL 数据库轻松检索数据。 我的问题是我不知道如何将所有数据从 Excel db 插入到 sql db.

我想将 Excel 数据库的“F1”列插入到“KODIKOS”列 和 要插入到“APOTHEMA”列的 Excel 数据库的“F2”列。

我的编程知识不好。我主要是设计师。 任何帮助将不胜感激

丢弃 Dreamweaver 生成的代码。如果要插入数据,那么最好使用插入查询而不是打开另一个记录集。以下是我的操作方法:

<%
Dim conn1, conn2, rs, rssql, insertsql

Set conn1 = Server.Createobject("ADODB.Connection")
Set conn2 = Server.Createobject("ADODB.Connection")

conn1.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\OLA\SITES\SuperCleanerWINHOST\BACK\file.xls;Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"";"

conn2.open "dsn=DSN_supercle_dsn;uid=DB_107185_cleanerdb_user;pwd=XXXXX;"

set rs = Server.CreateObject("ADODB.Recordset")
rssql = "SELECT * FROM ['Website stock$']"
rs.open rssql,conn1,0,1 

Do While Not rs.eof

insertsql = "INSERT into dbo.BACKUPP (KODIKOS, APOTHEMA) values ('" & rs("F1") & "', '" & rs("F2") & "')"

'Response.write insertsql
conn2.execute(insertsql)

rs.movenext
Loop

rs.close
conn1.close
conn2.close

Set rs = Nothing
Set conn1 = Nothing
Set conn2 = Nothing
%>

基本上发生的事情是我们正在遍历记录集,将 excel 文档中的每一行插入到 SQL 数据库中。

我添加了注释掉的 response.write insertsql 语句,因为在将记录集变量插入 SQL 字符串时很容易出错,阅读实际的内容是个好主意SQL 您的脚本在您尝试执行它之前输出的内容。为此,您取消注释 response.write 语句并注释 conn2.execute 语句。

我假设这是一个 "behind the scenes" 页面。如果它是 public 面对那么你需要看看如何防止 SQL 注入攻击

对于这样的任务,您最好直接利用 SQL 服务器的强大功能来进行数据导入,这就是 OPENROWSET 的设计目的。

INSERT INTO dbo.BACKUPP
SELECT * 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\OLA\SITES\SuperCleanerWINHOST\BACK\file.xls','SELECT * FROM [Website stock$]')

这种方法的妙处在于您仍然可以从经典 ASP 中调用它,只需将其包装在存储过程中并通过 ADODB.Command 对象调用,例如;

Dim cmd, conn_string
conn_string = "dsn=DSN_supercle_dsn;uid=DB_107185_cleanerdb_user;pwd=XXXXX;"

Set cmd = Server.CreateObject("ADODB.Command")
With cmd
  .ActiveConnection = conn_string
  .CommandType = adCmdStoredProc
  .CommandText = "dbo.YourStoredProc"
  Call .Execute()
End With