Как сохранить начальные / префиксные нули при экспорте в Excel / CSV с помощью оператора SQL-запроса? - PullRequest
0 голосов
/ 26 июня 2019

Я использую Oracle и хотел бы знать, как сохранить начальные / префиксные нули при экспорте в Excel / csv с помощью оператора SQL, указанного ниже:

Предположительно B.h (тип строки) может иметь значения00068573 и 098235

SELECT A.e,
       A.f,
       A.g,
       B.h
FROM A 
JOIN C ON C.e=A.e
JOIN B ON C.j=B.j; 

и я экспортирую данные в Python, частичный код, как показано ниже:

for row_data in cursor:
    output.writerow(row_data)

Большое спасибо за любые советы.

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вы должны были выполнить экспорт в формате CSV. Из экспорта Oracle вы получите фактическое значение, включая ведущий ноль. Откройте файл .csv в текстовом редакторе и проверьте значения. Нет никакого отношения к sql, если вы получаете экспорт с помощью любой из IDE (т.е. разработчика SQL)

0 голосов
/ 26 июня 2019
set heading off
set termout OFF
SET FEEDBACK OFF
SET TAB OFF
set pause off
set verify off
SET UNDERLINE OFF
set trimspool on
set timing off
set echo off
set linesize 1000
set pagesize 0
COLUMN CODE2 FORMAT 09999999
SET COLSEP ';'
spool test.csv

SELECT A.e,
       A.f,
       A.g,
       B.h as code2
FROM A 
JOIN C ON C.e=A.e
JOIN B ON C.j=B.j; 
spool off
exit;

или используйте to_char(B.h, '09999999')

set heading off
    set termout OFF
    SET FEEDBACK OFF
    SET TAB OFF
    set pause off
    set verify off
    SET UNDERLINE OFF
    set trimspool on
    set timing off
    set echo off
    set linesize 1000
    set pagesize 0
    SET COLSEP ';'
    spool test.csv

    SELECT A.e,
           A.f,
           A.g,
           to_char(B.h, '09999999')
    FROM A 
    JOIN C ON C.e=A.e
    JOIN B ON C.j=B.j; 
    spool off
    exit;

если поле символьное, вам нужно использовать функцию lpad.

 SELECT A.e,
           A.f,
           A.g,
           LPAD(B.h, 9, '0') 
    FROM A 
    JOIN C ON C.e=A.e
    JOIN B ON C.j=B.j;
...