sql查询以将数据从不同的表导出到文件

时间:2019-01-27 14:06:54

标签: sql oracle

目前,我正在尝试使用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

2 个答案:

答案 0 :(得分:2)

从Oracle开始,一个简单的选项是将查询结果假脱机到文件中(这是您在示例中尝试做的事情)。它是通过命令行工具SQL * Plus完成的。您应该了解有关SET命令的信息,这些命令使您可以生成 pretty 输出。

这是此类命令的示例:

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的控制文件,用于加载数据(而不是卸载数据)。

答案 1 :(得分:0)

最终,这取决于您使用的数据库。

最简单的方法是使用数据库管理器。例如,我知道phpMyAdmin具有导出功能,并且很容易做到这一点(很好,我将链接一个帖子,可以为您提供帮助)。 MySQL Workbench也有一个。

对于每个不同的数据库,您将需要不同的语法。我将尝试为几种可能性提供答案:

MySQL: 您将使用命令行,导航到要将输出文件保存到的文件夹,然后输入命令:

mysqldump --add-drop-table -u admin -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql

请注意,这将导出整个数据库,而这可能不是您想要的。请参见有关此here的不错的指南。如果您想对字段进行更多选择(使用SELECT),请尝试一下:

SELECT order_id,product_name INTO outfile 'full_path/orders.csv' fields terminated BY ',' from orders;

Oracle: 您应该可以使用以下命令:

exp username/password PARAMETER=(value1,value2,...,valuen)

这是一个更为复杂的程序,我建议您查阅他们的官方文档中有关导出here的信息。

MS SQL: 这可能是最好的。最好的选择是使用Server Management Studio,因为它在那里非常简单,因为我不记得,并且找不到任何简单的命令来执行此操作。您也许可以使用bcp命令(在cmd中)执行某些操作。

真相: 使用服务器管理工​​作室,到目前为止,这是最好的选择。如果出于某种原因,您需要通过命令提示符或脚本来执行此操作,则有可能(但并非真的)这样做。也请访问this以获得常规帮助。