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