SQL Script: ORA-01790



我正在编写一个脚本,用于从我们的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:psmajorclaritycsvmcguardianexport.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:psmajorclaritycsvmcstudentexport.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;

我似乎已经解决了我的问题。

我改变了这个:

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使这成为必要。

最新更新