Сценарий SQL: ORA-01790 - PullRequest
       1

Сценарий SQL: ORA-01790

0 голосов
/ 17 января 2019

Я пишу скрипт, который используется для извлечения трех полей из нашей базы данных 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;

1 Ответ

0 голосов
/ 17 января 2019

Кажется, я исправил свою проблему.

Я изменил это:

SELECT
        'student_id,guardian_email,guardian_email2'
    FROM
        Dual
    UNION ALL
    SELECT
      student_number || ',' ||
      guardianemail || ',' ||
      guardianemail

К этому:

SELECT
    'student_id,guardian_email,guardian_email2'
FROM
    Dual
UNION ALL
SELECT TO_CHAR
  (student_number || ',' ||
  guardianemail || ',' ||
  guardianemail)

Это заставило файл .CSV генерировать нормально. Я предполагаю, что поле электронной почты, являющееся CLOB, сделало это необходимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...