2017-01-05 7 views
0

Я хочу экспортировать TXT-файл из SQL-скрипта. Мне не нужны заголовки. Мне также не нужны никакие запятые (,), разделяющие мои поля, и я хочу, чтобы они сохраняли «, который окружает каждое значение в моей таблице. Мой код работает, но включает заголовки, удаляет» из каждого поля и вставляет a. Моего кодаЭкспорт .txt из Sql issue

set echo off 
set verify off 
set termout on 
set heading off 
set pages 50000 
set feedback off 
set newpage none 
set linesize 1000 
set serveroutput off 



spool New_Members.txt 

SELECT 'Unique_ID, Name, Alt_Name, Entity_Type, Party_Type, Reference_#, Addr1, Addr2, Addr3, Town, County, Postcode, 
     Country,ALT_ADDRESS1,ALT_ADDRESS2,ALT_ADDRESS3,ALT_TOWN,ALT_COUNTY,ALT_POST_CODE,ALT_COUNTRY,NATIONALITY, 
     DOB,INDIVIDUAL_ID,INDIVIDUAL_ID_TYPE,COUNTRY_OF_REGISTRATION,COMPANY_ID,COMPANY_ID_TYPE,SOURCE_COUNTRY,SOURCE_SYSTEM,TRANSACTION_TYPE' 
from  dual; 
/

select Unique_ID||','||Name||','||Alt_Name||','|| Entity_Type||','||Party_Type||','||Reference_#||','||Addr1||','||Addr2||','|| 
    Addr3||','||Town||','||County||','||Postcode||','||Country||','||ALT_ADDRESS1||','||ALT_ADDRESS2||','|| 
    ALT_ADDRESS3||','||ALT_TOWN||','||ALT_COUNTY||','||ALT_POST_CODE||','||ALT_COUNTRY||','||NATIONALITY||','|| 
    DOB||','||INDIVIDUAL_ID||','||INDIVIDUAL_ID_TYPE||','||COUNTRY_OF_REGISTRATION||','||COMPANY_ID||','||COMPANY_ID_TYPE||','|| 
    SOURCE_COUNTRY||','||SOURCE_SYSTEM||','||TRANSACTION_TYPE 
from  dbo.Temp_Weekly_Export_File; 
/


spool off; 

exit 
+0

Вы получаете сообщение об ошибке при запуске скрипта? если да, включите сообщение об ошибке –

+0

Мой код запускается, но удаляет заголовки и двойные кавычки. Он также вставляет запятые. –

+2

В коде не отображаются никакие двойные кавычки, которые могут быть удалены. Он вставляет запятую, когда вы пишете '|| ',' ||' –

ответ

1

У вас уже есть set header off, так что вы не увидите Oracle сгенерированных заголовков столбцов. Установка pagesize в ноль также подавляет заголовки. Вы можете счесть полезным также set trimout on и set trimspool on.

Что вы, кажется, видите, это заголовок CSV, который вы явно генерируете первым запросом. Если вы не хотите видеть эту строку заголовка, просто удалите ее из своего сценария.

Если вы сохраняете этот заголовок, удалите лишние пробелы и, в частности, разрывы строк, поскольку они будут обрабатывать заголовок как несколько строк при импорте в Excel и т. Д. Если вы пытались остановить слишком длинную строку ваш сценарий, вы можете объединить несколько коротких строк вместо:

select 'Unique_ID,Name,Alt_Name,Entity_Type,Party_Type,Reference_#,' 
    || 'Addr1,Addr2,Addr3,Town,County,Postcode,Country,ALT_ADDRESS1,' 
    || 'ALT_ADDRESS2,ALT_ADDRESS3,ALT_TOWN,ALT_COUNTY,ALT_POST_CODE,' 
    || 'ALT_COUNTRY,NATIONALITY,DOB,INDIVIDUAL_ID,INDIVIDUAL_ID_TYPE,' 
    || 'COUNTRY_OF_REGISTRATION,COMPANY_ID,COMPANY_ID_TYPE,' 
    || 'SOURCE_COUNTRY,SOURCE_SYSTEM,TRANSACTION_TYPE' 
from dual; 

вы работаете оба ваших запросов в два раза, потому что каждый из них завершается точкой с запятой (;), который submits that statement; и затем следует a slash (/), который повторно выполняет текущий командный буфер. Вам нужен только один или другой, поэтому я удалял бы и косые черты - но независимо от того, что вы удаляете, будьте последовательны и проверьте, есть ли в вашей организации правила кодирования, которые предпочитают один за другим.

Как отмечено в комментариях, ваш вопрос немного смущен, так как вы явно добавляете запятые и нет двойных кавычек для удаления. Фактически вы можете захотеть добавить двойные кавычки, хотя, если какое-либо из значений столбца может содержать разделитель запятой, что должно было бы запутать Excel (или что-то еще будет использовать этот файл). Вы можете сцепить двойные кавычки вокруг конкретных полей в соответствии с требованиями и т.д .:

select Unique_ID||','||Name||','||Alt_Name||','|| Entity_Type||','|| 
    Party_Type||','||Reference_#||',"'||Addr1||'","'||Addr2||'",'|| 
... 

который бы ограждают первые два значения адреса столбца в двойных кавычках в выходном сигнале.

Смежные вопросы