Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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
String 使用oData将大型文本文件存储到数据库_String_Odata_Sapui5_Abap - Fatal编程技术网

String 使用oData将大型文本文件存储到数据库

String 使用oData将大型文本文件存储到数据库,string,odata,sapui5,abap,String,Odata,Sapui5,Abap,我需要在一个字符串类型的字段下将一个非常大的字符串存储到后端表中 我存储的字符串长度超过1000万(1百万)个字符。从后端存储和检索需要很长时间 我尝试了压缩算法,但没能压缩这么大的字符串。 那么,处理这种情况并提高性能的最佳方法是什么呢 使用的技术: 前端-SAP UI5 关口-小田 后端-SAP ABAP 尝试的压缩方法: 上述压缩方法无法解决我的问题。好吧,正确的说法是传输XLSX肯定比JSON好/快。 ABAP JSON工具并不丰富,但对于大多数操作来说已经足够了。更特殊的任务可

我需要在一个字符串类型的字段下将一个非常大的字符串存储到后端表中

我存储的字符串长度超过1000万(1百万)个字符。从后端存储和检索需要很长时间

我尝试了压缩算法,但没能压缩这么大的字符串。 那么,处理这种情况并提高性能的最佳方法是什么呢

使用的技术:

  • 前端-SAP UI5
  • 关口-小田
  • 后端-SAP ABAP
尝试的压缩方法:


上述压缩方法无法解决我的问题。

好吧,正确的说法是传输XLSX肯定比JSON好/快。
ABAP JSON工具并不丰富,但对于大多数操作来说已经足够了。更特殊的任务可以通过内部表和转换来完成。因此,强烈建议在后端服务器上执行操作(XLSX>>JSON)

关于后端数据库表,我支持在字符串字段中插入10M字符串是有史以来最糟糕的想法。在透明表中存储大文件的推荐方法是利用。这是ABAP的一种BLOB,它在处理二进制数据方面要快得多。

我已经对我的1400万样本文件做了一些性能测试,这就是我得到的

在XSTRING字段中插入

插入字符串字段:

正如您可以注意到的那样,DB操作的净时间差别很大,不支持字符串

您的上载代码可以如下所示:

DATA: len type i,
      lt_content TYPE standard table of tdline,
      ws_store_tab TYPE zstore_tab.

"Upload the file to Internal Table
 call function 'GUI_UPLOAD'
  exporting
   filename                = '/TEMP/FILE.XLSX'
   filetype                = 'BIN'
 importing
   filelength              = len
 tables
   data_tab                = lt_content
.

IF sy-subrc <> 0.
 message 'Unable to upload file' type 'E'.
ENDIF.

"Convert binary itab to xstring
call function 'SCMS_BINARY_TO_XSTRING'
 exporting
  input_length      = len
  FIRST_LINE         = 0
  LAST_LINE          = 0
  importing
  buffer             = zstore_tab-file        "should be of type XSTRING!
 TABLES
  binary_tab        = gt_content
 exceptions
 failed             = 1
 others             = 2
        .
IF sy-subrc <> 0.
 MESSAGE 'Unable to convert binary to xstring' type 'E'.
ENDIF.

INSERT zstore_tab FROM ws_store.

IF sy-subrc IS INITIAL.
 MESSAGE 'Successfully uploaded' type 'S'.
ELSE.
 MESSAGE 'Failed to upload' type 'E'.
ENDIF.
数据:len类型i,
tdline的lt_内容类型标准表,
ws_store_tab类型为zstore_tab。
“将文件上载到内部表
调用函数“GUI_上传”
出口
filename='/TEMP/FILE.XLSX'
文件类型='BIN'
进口
filelength=len
桌子
数据选项卡=lt\u内容
.
如果sy subrc为0。
消息“无法上载文件”键入“E”。
恩迪夫。
“将二进制itab转换为xstring
调用函数“SCMS_BINARY_TO_XSTRING”
出口
输入长度=len
第一行=0
最后一行=0
进口
buffer=zstore_tab-file“应该是XSTRING类型!
桌子
二进制选项卡=gt\u内容
例外情况
失败=1
其他=2
.
如果sy subrc为0。
消息“无法将二进制转换为xstring”类型为“E”。
恩迪夫。
从ws_商店插入zstore_选项卡。
如果sy subrc是首字母。
消息“已成功上载”类型为“S”。
其他的
消息“无法上载”类型为“E”。
恩迪夫。
对于解析和操作XLSX multiple作为已经存在的ABAP包装器,示例有和

所有这些都是关于后端的优化。前端的优化
欢迎来自UI5专家(我不属于他们)但是,SAP的一般建议是将所有大规模操作转移到应用程序服务器。

此字符串是否来自前端?如果是,您是否可以在后端生成它来存储?hirse,它来自前端。我正在阅读excel工作表,然后将其转换为JSON并将其存储为字符串。您不能只上载excel文件和存储?XLSX文件基本上是ZIP文件,因此它们可能比JSON文件小。嗨,Marc,我必须在excel上执行一些操作,然后存储数据,所以我的要求不仅仅是存储文件。我认为在varchar中存储一个1000万字符的字符串是没有办法让事情顺利进行的。我将从更改在一个小地方,从那里开始工作。