首页 > 解决方案 > sql查询将数据从不同的表导出到文件

问题描述

目前,我正在尝试使用 sql 语句将数据从不同的数据库(oracle、sqlserver、MySQL...等)导出到文件。有人可以帮我这样做吗,如下所示:

SELECT order_id,product_name FROM orders INTO OUTFILE 'orders.csv' 
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

但我的查询不起作用,出现以下错误

ORA-00933: SQL command not properly ended

标签: sqloracle

解决方案


对于 Oracle,一个简单的选择是将查询结果假脱机到文件中(这是您在示例中尝试做的事情)。它是通过命令行工具 SQL*Plus 完成的。您应该了解SET可以让您做出漂亮输出的命令。

以下是此类命令的示例:

SQL> set termout off
SQL> set trimspool on
SQL> set echo off
SQL> set verify off
SQL> set autoprint off
SQL> set serveroutput off
SQL> set arraysize 1000
SQL> set pagesize 0
SQL> set linesize 100
SQL> set long 10000
SQL> set numwidth 10
SQL> set feedback off
SQL> set colsep ';'
SQL> col empno format 99999
SQL> col ename format a10
SQL> col sal format 999G990
SQL> spool emps.txt
SQL> select empno, ename, sal from emp;
  7369;SMITH     ;     800
  7499;ALLEN     ;   1.600
  7521;WARD      ;   1.250
  7566;JONES     ;   2.975
  7654;MARTIN    ;   1.250
  7698;BLAKE     ;   2.850
  7782;CLARK     ;   2.450
  7839;KING      ;   5.000
  7844;TURNER    ;   1.500
  7900;JAMES     ;     950
  7902;FORD      ;   3.000
  7934;MILLER    ;   1.300
  7788;SCOTT     ;   3.000
  7876;ADAMS     ;   1.100
SQL> spool off
SQL>

顺便说一句,您编写的第 2-4 行看起来像 SQL*Loader 的控制文件,用于加载数据(而不是卸载数据)。


推荐阅读