我编写了以下脚本来从数据库中选择数据并使用 isql 将其保存在 CSV 文件中:
OUTPUT temp/filename.csv FORMAT csv DELIMITED BY ';';
SELECT dept_no, department, location FROM department;
我在 CSV 文件中得到以下结果:
DEPT_NO DEPARTMENT LOCATION
======= ========================= ===============
000 Corporate Headquarters Monterey
100 Sales and Marketing San Francisco
600 Engineering Monterey
900 Finance Monterey
180 Marketing San Francisco
620 Software Products Div. Monterey
621 Software Development Monterey
622 Quality Assurance Monterey
623 Customer Support Monterey
670 Consumer Electronics Div. Burlington, VT
671 Research and Development Burlington, VT
672 Customer Services Burlington, VT
130 Field Office: East Coast Boston
140 Field Office: Canada Toronto
110 Pacific Rim Headquarters Kuaui
115 Field Office: Japan Tokyo
116 Field Office: Singapore Singapore
120 European Headquarters London
121 Field Office: Switzerland Zurich
123 Field Office: France Cannes
DEPT_NO DEPARTMENT LOCATION
======= ========================= ===============
125 Field Office: Italy Milan
但是,我需要得到一个输出 1) 没有重复的标题和 2) 列中数据之间没有空格。
理想的输出应该是这样的:
ID;LASTNAME;FIRSTNAME;DOB
1;Miller;Steve;1980-06-28
2;Jones;Martha;1965-11-02
3;Waters;Richard;1979-10-15
谁能帮我解决这个问题?
这对你有帮助。它使 isql 重复每一次
isql -pag 100000
可以在select中的每个字段(最后一个除外)添加分号
;
如下图:
select (fieldname) || ';' as xxxxx , (fieldname) || ';' as xxxxx ........
标题仍然是一个领域。
1;Miller;Steve;1980-06-28
2;Jones;Martha;1965-11-02
3;Waters;Richard;1979-10-15
这里我展示了一个输出到制表符分隔文件的示例
output.tsv
.
关闭标题:
SET HEADING OFF;
重定向输出到文件:
OUTPUT 'output.tsv';
输出自己的header:
SELECT 'DEPT_NO' || ASCII_CHAR(9) || 'DEPARTMENT' || ASCII_CHAR(9) || 'LOCATION' FROM RDB$DATABASE;
输出数据:
SELECT DEPT_NO || ASCII_CHAR(9) || DEPARTMENT || ASCII_CHAR(9) || LOCATION FROM DEPARTMENT;