我正在编写一个脚本,用于从我们的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使这成为必要。