首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将Oracle数据库中的数据以UTF-8格式导出到CSV文件中?

如何将Oracle数据库中的数据以UTF-8格式导出到CSV文件中?
EN

Database Administration用户
提问于 2017-05-25 07:57:43
回答 1查看 9.3K关注 0票数 0

我有一个带有从Oracle存储过程生成的WE8ISO8859P1编码的CSV文件。是否有任何脚本行来定义UTF-8编码格式的CSV文件的输出?

代码语言:javascript
运行
复制
 CREATE OR REPLACE 
PROCEDURE export_main(dir VARCHAR2, file_name VARCHAR2)
  IS
 select_stmt VARCHAR2(100) := 'SELECT MTYPE || '','' || MNO FROM MAIN';
    cur INTEGER;
    file UTL_FILE.FILE_TYPE;
    row_value VARCHAR2(4000);
    ret INTEGER;
  BEGIN
    -- Open a cursor for the specified SELECT statement
    cur := DBMS_SQL.OPEN_CURSOR;
    DBMS_SQL.PARSE(cur, select_stmt, DBMS_SQL.NATIVE);
    ret := DBMS_SQL.EXECUTE(cur);

    -- All columns were concatenated into single value in SELECT
    DBMS_SQL.DEFINE_COLUMN(cur, 1, row_value, 4000);

    -- Open the file for writing
    --file := UTL_FILE.FOPEN(UPPER(dir), file_name, 'w', 32767);
file := UTL_FILE.FOPEN_NCHAR(UPPER(dir), file_name, 'w', 32767);
    -- Export rows one by one
    LOOP
       ret := DBMS_SQL.FETCH_ROWS(cur);
       EXIT WHEN ret = 0;

       -- Get the value
       row_value := NULL;
       DBMS_SQL.COLUMN_VALUE(cur, 1, row_value);

       -- Write the row to the file
      -- UTL_FILE.PUT_LINE(file, row_value);
UTL_FILE.PUT_LINE_NCHAR(file, TO_NCHAR(row_value));
    END LOOP;

     UTL_FILE.FCLOSE(file);
     DBMS_SQL.CLOSE_CURSOR(cur);

    EXCEPTION WHEN NOT_LOGGED_ON THEN
    DBMS_OUTPUT.PUT_LINE ('A program issues a database call without being connected to Oracle.');
  END;

Oracle数据库用WE8ISO8859P1编码,postgres DB用UTF-8编码

我需要使用存储过程将CSV文件导入Postgres DB表,在postgres中,默认编码是UTF-8

EN

回答 1

Database Administration用户

发布于 2017-05-25 08:20:24

乌特_FILE.PUT_线线_NCHAR程序

此过程将存储在缓冲区参数中的文本字符串写入由文件句柄标识的打开文件。使用此函数,您可以用Unicode而不是在数据库字符集中编写文本文件。

所以你可以试试这样的方法:

代码语言:javascript
运行
复制
-- Write the row to the file
UTL_FILE.PUT_LINE_NCHAR(file, TO_NCHAR(row_value));
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/174538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档