搜尋
lob to csvJun 07, 2016 pm 02:55 PM
csv大型物件數據類型

将相应的 大型对象LOB类型数据转为相应的CSV格式 返回 ,采用了piplined 的方式,也就是 运行出一条数据 就返回一条 ,不是全部都执行完了 再返回的形式 PL/SQL lob-to-csv piplined function clob_to_csv (p_csv_clob in clob, p_separator in varchar2 := g

将相应的 大型对象LOB类型数据转为相应的CSV格式 返回 ,采用了piplined 的方式,也就是 运行出一条数据 就返回一条 ,不是全部都执行完了 再返回的形式  PL/SQL lob-to-csv piplined
function clob_to_csv (p_csv_clob in clob,
                      p_separator in varchar2 := g_default_separator,
                      p_skip_rows in number := 0) return t_csv_tab pipelined
as
  l_line_separator         varchar2(2) := chr(13) || chr(10);--行的 分割符号 \r\n 
  l_last                   pls_integer;--上一次的扫描位置
  l_current                pls_integer;--这一次的扫描位置
  l_line                   varchar2(32000);
  l_line_number            pls_integer := 0;
  l_from_line              pls_integer := p_skip_rows + 1;
  l_line_array             t_str_array;
  l_row                    t_csv_line := t_csv_line (null, null,  -- line number, line raw
                                                     null, null, null, null, null, null, null, null, null, null,   -- lines 1-10
                                                     null, null, null, null, null, null, null, null, null, null);  -- lines 11-20
begin

  /*

  Purpose:      convert clob to CSV

  Remarks:      based on code from http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1352202934074
                              and  http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:744825627183

  Who     Date        Description
  ------  ----------  --------------------------------
  MBR     31.03.2010  Created
  fartpig 07.03.2011  noted
  */

  -- If the file has a DOS newline (cr+lf), use that: 如果文件时DOS的格式就是用 \r\n
  -- If the file does not have a DOS newline, use a Unix newline (lf) 如果不是就采用 unix标准 \n
  -- 通过检索 \r\n 是否存在 
  if (nvl(dbms_lob.instr(p_csv_clob, l_line_separator, 1, 1),0) = 0) then
    l_line_separator := chr(10);
  end if;

  l_last := 1;--设定上一次扫描位置为 1 

  loop
    --检索 当前分割符号的位置
    --为了能够顺利的将文件读完 需要 将传入的 LOB结尾加上一个 分割符号
    l_current := dbms_lob.instr (p_csv_clob || l_line_separator, l_line_separator, l_last, 1);
    --当 没有找到时候 退出
    exit when (nvl(l_current,0) = 0);
    --递增  行号
    l_line_number := l_line_number + 1;
    
    if l_from_line <= l_line_number then
      --通过 上一次的标记和这一次的标记 获得相应的 子值
      --注意这里的参数 顺序和 instr不同 ,偏移量和长度 是反过来的
      l_line := dbms_lob.substr(p_csv_clob || l_line_separator, l_current - l_last + 1, l_last);
      --l_line := replace(l_line, l_line_separator, '');
      --将得到的 子值的 \r\n 替换掉
      l_line := replace(l_line, chr(10), '');
      l_line := replace(l_line, chr(13), '');
      --调用相应的 csv to array  API来处理 得到这个行 的结果数组
      l_line_array := csv_to_array (l_line, p_separator);
      --将获得的值 进行那个封装到 记录中 通过pip row返回
      l_row.line_number := l_line_number;
      l_row.line_raw := substr(l_line,1,4000);
      l_row.c001 := get_array_value (l_line_array, 1);
      l_row.c002 := get_array_value (l_line_array, 2);
      l_row.c003 := get_array_value (l_line_array, 3);
      l_row.c004 := get_array_value (l_line_array, 4);
      l_row.c005 := get_array_value (l_line_array, 5);
      l_row.c006 := get_array_value (l_line_array, 6);
      l_row.c007 := get_array_value (l_line_array, 7);
      l_row.c008 := get_array_value (l_line_array, 8);
      l_row.c009 := get_array_value (l_line_array, 9);
      l_row.c010 := get_array_value (l_line_array, 10);
      l_row.c011 := get_array_value (l_line_array, 11);
      l_row.c012 := get_array_value (l_line_array, 12);
      l_row.c013 := get_array_value (l_line_array, 13);
      l_row.c014 := get_array_value (l_line_array, 14);
      l_row.c015 := get_array_value (l_line_array, 15);
      l_row.c016 := get_array_value (l_line_array, 16);
      l_row.c017 := get_array_value (l_line_array, 17);
      l_row.c018 := get_array_value (l_line_array, 18);
      l_row.c019 := get_array_value (l_line_array, 19);
      l_row.c020 := get_array_value (l_line_array, 20);

      pipe row (l_row);

    end if;
    --将使用当前的扫描位置加上行的分割符号 来替换 上一次的扫描位置 
    l_last := l_current + length (l_line_separator);

  end loop;

  return;

end clob_to_csv;
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Laravel开发:如何使用Laravel Excel导入和导出CSV文件?Laravel开发:如何使用Laravel Excel导入和导出CSV文件?Jun 14, 2023 pm 12:06 PM

Laravel是业界比较出色的PHP框架之一,其强大的功能和易于使用的API使得其深受开发者的喜爱。在实际开发中,我们经常需要进行数据的导入和导出工作,而CSV作为一种广泛应用的数据格式,也成为了常用的导入和导出格式之一。本文就将介绍如何使用LaravelExcel扩展来进行CSV文件的导入和导出操作。一、安装LaravelExcel首先,我们需

php中json字符串如何转csv格式php中json字符串如何转csv格式Jun 02, 2023 am 11:13 AM

php中json字符串转csv格式的方法:1、创建一个php示例文件;2、将JSON字符串转换为PHP数组或对象;3、创建一个文件句柄并打开一个CSV文件进行写入;4、在CSV文件中编写标题行和数据行;5、将数据行写入CSV文件,并在字段之间使用逗号分隔符,关闭文件句柄并完成转换即可。

PHP将行格式化为 CSV 并写入文件指针PHP将行格式化为 CSV 并写入文件指针Mar 22, 2024 am 09:00 AM

这篇文章将为大家详细讲解有关PHP将行格式化为CSV并写入文件指针,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。将行格式化为CSV并写入文件指针步骤1:打开文件指针$file=fopen("path/to/file.csv","w");步骤2:将行转换为CSV字符串使用fputcsv()函数将行转换为CSV字符串。该函数接受以下参数:$file:文件指针$fields:作为数组的CSV字段$delimiter:字段分隔符(可选)$enclosure:字段引号(

php 导入csv乱码问题怎么办php 导入csv乱码问题怎么办Nov 21, 2022 am 09:32 AM

php导入csv乱码问题的解决办法:1、构造一个解析函数“function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {...}”;2、读取文件到变量;3、通过“substr($s,2)”去掉BOM头即可。

Python中的XML数据转换为CSV格式Python中的XML数据转换为CSV格式Aug 11, 2023 pm 07:41 PM

Python中的XML数据转换为CSV格式XML(ExtensibleMarkupLanguage)是一种可扩展标记语言,常用于数据的存储和传输。而CSV(CommaSeparatedValues)则是一种以逗号分隔的文本文件格式,常用于数据的导入和导出。在处理数据时,有时需要将XML数据转换为CSV格式以便于分析和处理。Python作为一种功能强大

使用 OpenCSV 在 Java 中进行 CSV 文件的读写操作详解使用 OpenCSV 在 Java 中进行 CSV 文件的读写操作详解Dec 20, 2023 am 09:36 AM

Java是一种广泛使用的编程语言,开发者们常常需要处理各种数据格式。CSV(Comma-SeparatedValues,逗号分隔值)是一种常见的数据格式,广泛应用于数据交换和存储。在Java中,我们可以使用OpenCSV库来读写CSV文件。OpenCSV是一个简单易用的开源库,提供了方便的API来处理CSV数据。本文将介绍如何在

如何使用Java将CSV文件导入JTable进行展示如何使用Java将CSV文件导入JTable进行展示Apr 21, 2023 pm 11:34 PM

概述主要知识点a.SwingNode类:把Javaswing组件封装成一个JavaFX的Node,使得JavaSwing可以和JavaFX嵌套在一起使用,JavaSwing贼丑,但操作简单,JavaFX的表格组件(TableView等)有点复杂,所以选择嵌套JavaSwing来使用,丑就丑吧b.javacsv-2.0.jar:用于通过文件地址读取csv文件,并可以进行一系列操作.尽管2008年之后就不再更新,但操作个csv文件也够用了。c.FileChoose类:JavaFX的一个文件选择器,可

csv怎么转vcfcsv怎么转vcfDec 15, 2023 am 10:44 AM

csv通过打开CSV文件、格式化CSV文件、导出CSV文件、调整VCF文件格式和保存VCF文件的步骤转vcf。详细介绍:1、打开CSV文件,可以使用Microsoft Excel、Google Sheets或任何其他电子表格程序打开CSV文件;2、格式化CSV文件,确保CSV文件的列标题清晰明确;3、导出CSV文件等等。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)