Я пишу скрипт, который используется для извлечения трех полей из нашей базы данных Powerschool и размещения информации в файле .csv. Это последний из шести сценариев, которые в основном идентичны, за исключением того, что они предназначены для разных областей. Во всех других сценариях я использовал следующее, чтобы получить строку «заголовка», которая соответствует спецификациям .csv от поставщика, куда будут отправляться файлы:
SELECT
'school_id,student_id,email,first_name,last_name,Grade'
FROM
Dual
UNION ALL
Все пять других файлов работают безупречно. Но по какой-то причине этот последний генерирует ошибку ORA-01790. Я не могу найти разницу между этим сценарием и всеми остальными. Что, вы парни, думаете? Вот полный скрипт, генерирующий ошибку:
set heading off
set pagesize 0
set linesize 400
set feedback off
set underline off
set trimspool on
SET LONGCHUNKSIZE 1024
SET LONG 10000
spool d:\psmajorclarity\csv\mcguardianexport.csv
SELECT
'student_id,guardian_email,guardian_email2'
FROM
Dual
UNION ALL
SELECT
student_number || ',' ||
guardianemail || ',' ||
guardianemail
FROM students
WHERE Grade_Level>=6
AND Grade_level<=12;
SPOOL off
EXIT;
"Student_number" - это тип данных FLOAT, а "guardianemail" - CLOB.
А вот один из сценариев, который полностью функционален и работает как положено:
set heading off
set pagesize 0
set linesize 400
set feedback off
set underline off
set trimspool on
SET LONGCHUNKSIZE 1024
SET LONG 10000
spool d:\psmajorclarity\csv\mcstudentexport.csv
SELECT
'school_id,student_id,email,first_name,last_name,Grade'
FROM
Dual
UNION ALL
SELECT
schoolid || ',' ||
student_number || ',' ||
NULL || ',' ||
first_name || ',' ||
REPLACE(last_name,',') || ',' ||
grade_level
FROM STUDENTS
WHERE Grade_Level>=6
AND Grade_level<=12;
SPOOL off
EXIT;