无法使用vb.net将数据导入到hana模式表

2020-08-16 16:19发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我想将Excel工作...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我想将Excel工作表直接导入SAP Business One 9.3 For Hana使用的SAP HANA 1.0的HANA模式的内部表中。 Excel工作表包含一些数据。 只有一张纸,有20列。

Excel表格是通过使用vs的 vb.net 开发的应用程序从mysql导出的 。2015或2010,然后将其导入到hana模式表中。 在hana模式和mysql模式中,表名称为Invoice_AR。

进行导入时,系统提示错误。 错误消息的屏幕截图如下:

我在mysql模式表和hana模式表之间创建了相同的列类型。 我没有在mysql模式表字段中使用double。 我也不使用列类型'system.init32'。

在系统中导入excel数据期间是否有任何变化?

这是代码 我正在使用:

私有子ImportToHana(FullFileName作为字符串)

         Dim filenam作为字符串
         filenam = FullFileName
         将ExcelConnection设置为新的System.Data.OleDb.OleDbConnection(" Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + filenam +";扩展属性="" Excel 12.0 Xml; HDR = Yes""")
         ExcelConnection.Open()
         Dim expr As String =" SELECT * FROM [Sheet1 $]"
         Dim objCmdSelect As OleDbCommand =新的OleDbCommand(expr,ExcelConnection)
         昏暗的objDR作为OleDbDataReader

         昏暗的SQLconn作为新的HanaConnection()
         Dim sConn As String =""
         sConn =" Server ="&sSAPServerName&_
                                 "; Current Schema ="&sSAPDbName&_
                                 "; UseTrusted = False"&_
                                 "; UserID ="&sSAPDbUserName&_
                                 "; Password ="&sSAPDbPassword

         SQLconn.ConnectionString = sConn
         SQLconn.Open()

         将bulkCopy用作HanaBulkCopy = New HanaBulkCopy(SQLconn)
             bulkCopy.DestinationTableName =" AR_Invoice"

             尝试
                 objDR = objCmdSelect.ExecuteReader
                 bulkCopy.WriteToServer(objDR)
                 objDR.Close()
                 SQLconn.Close()
                 MsgBox("数据已成功导入到SQL",MsgBoxStyle.Information)
             异常捕获
                 MsgBox(例如ToString)
             结束尝试
         最终使用
     结束

请帮助解决此问题。

谢谢。

Rgds

史蒂夫

(13.7 kB)
4条回答
南山jay
2020-08-16 17:10

您好,史蒂夫

您可以删除hanabulkcopy并改用其他方法。

您可以尝试使用此示例(在C#中):

使用System.IO;
 使用System.Data;
 使用System.Data.OleDb;
 使用System.Data.HanaClient;
 使用System.Configuration;

 受保护的void Upload(对象发送者,EventArgs e)
 {
 //上传并保存文件
   字符串excelPath = Server.MapPath("〜/Files/")+
   Path.GetFileName(FileUpload1.PostedFile.FileName);
   FileUpload1.SaveAs(excelPath);

 字符串conString = string.Empty;
 字符串扩展名= Path.GetExtension(FileUpload1.PostedFile.FileName);
 开关(扩展名)
 {
     case" .xls"://Excel 97-03
         conString = ConfigurationManager.ConnectionStrings [" Excel03ConString"]。ConnectionString;
         打破;
     case" .xlsx"://Excel 07或更高版本
         conString =


 ConfigurationManager.ConnectionStrings [" Excel07 + ConString"]。ConnectionString;
         打破;

 }
 conString = string.Format(conString,excelPath);
 使用(OleDbConnection excel_con = new OleDbConnection(conString))
 {
     excel_con.Open();
     字符串sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
     null).Rows [0] [" TABLE_NAME"]。ToString();
     DataTable dtExlData = new DataTable();

    //[可选]:建议使用此数据,否则将考虑数据
     默认为字符串。
     dtExlData.Columns.AddRange(new DataColumn [3] {new DataColumn(" Id",
     typeof(int)),
             新的DataColumn(" Name",typeof(string)),
             new DataColumn(" Salary",typeof(decimal))});

     使用(OleDbDataAdapter oda = new OleDbDataAdapter(" SELECT * FROM [" +
    sheet1 +"]",excel_con))
     {
         oda.Fill(dtExlData);
     }
     excel_con.Close();

     字符串consString =
     ConfigurationManager.ConnectionStrings [" constr"]。ConnectionString;
     使用(HanaConnection con = new HanaConnection(consString))
     {
         使用(HanaBulkCopy HanaBulkCopy = new HanaBulkCopy(con))
         {
            //设置数据库表名
             HanaBulkCopy.DestinationTableName =" dbo.AR_Invoice";

            //[可选]:将Excel列与数据库表的列进行映射
             HanaBulkCopyColumnMappings.Equal(" EntryId"," EntryId");
             HanaBulkCopyColumnMappings.Equal(" CardCode"," CardCode");
             HanaBulkCopyColumnMappings.AddEqualPriceTotal"," PriceTotal");
             con.Open();
             HanaBulkCopy.WriteToServer(dtExlData);
             con.Close();
         }
     }
 }
  } 

祝你好运

Rgds

吉米

一周热门 更多>