SQLPLUS записывает c s ¿¿¿¿¿¿¿¿¿¿file file file в файл csv, когда находит данные на других языках, кроме английского

Я пытаюсь экспортировать данные из таблицы Oracle в CSV-файл. Таблица имеет один из столбцов, определенных как тип данных CLOB, и данные хранятся на нескольких языках.

Например,

create table test1
( col1 number,
col2 clob);

Insert into test1 values ( 1, '使用 Excel 数据挖掘外接程序执行购物篮分析');

select * from test1;

Выполнено и скриншот взят из SQL Developer:образ

Когда я запустил приведенный ниже скрипт из SQLPlus

set echo off
set newpage none
set feedback off
set pages 0
spool C:\Users\venkat\Desktop\data.csv
select 'col1,col2' from dual;
select col1||',' || col2
from test1; 
spool off;

Данные в файле выглядят так

col1, col2
1, Excel ¿¿¿¿¿¿¿¿¿¿¿¿¿¿

Ждем помощи на этом форуме. Я хочу видеть данные, как они есть в базе данных.

Изменить: Извинения, я должен был упомянуть среду как Windows.

Больше информации об этом параметре языка NLS здесь

Select * from nls_database_parameters
 where parameter IN ('NLS_LANGUAGE','NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

И результат говорит

NLS_LANGUAGE AMERICAN NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET AL16UTF16

1 ответ

Решение

Вы должны установить NLS_LANG переменная окружения, чтобы указать SQL Plus, какую кодировку символов использовать; укажите кодировку символов, которая может представлять ожидаемые символы. См., Например, " Запуск SQL Plus с использованием bash приводит к неправильной кодировке" при сбое сервера.

В Bash вы должны установить переменную окружения следующим образом:

 export NLS_LANG="AMERICAN_AMERICA.UTF8"

На Windows с cmd.exe вы бы сказали

 set NLS_LANG=AMERICAN_AMERICA.UTF8
Другие вопросы по тегам