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

将不同表中的数据导出到文件的sql查询,sql,oracle,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

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

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

最简单的方法是使用数据库管理器。例如,我知道phpMyAdmin有一个导出功能,并且很容易使用(这很好,我将链接一篇文章,可以帮助您实现这一点)。MySQL工作台也有一个

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

MySQL: 您可以使用命令行,导航到输出文件所在的文件夹,然后输入以下命令:

mysqldump --add-drop-table -u admin -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql
请注意,这将导出可能不是您想要的整个数据库。请看一本很好的指南。如果您想要更具字段选择性的内容(使用SELECT),请尝试一下:

SELECT order_id,product_name INTO outfile 'full_path/orders.csv' fields terminated BY ',' from orders;
甲骨文: 您应该能够使用以下命令:

exp username/password PARAMETER=(value1,value2,...,valuen)
这是一个更复杂的问题,我建议检查他们的官方文件以便出口

MS SQL: 这可能是最好的。您最好的选择是使用server management studio,因为它非常简单,我想不起来了,也找不到任何简单的命令来执行此操作。您可以使用bcp命令(在cmd中)执行某些操作

真相:
使用服务器管理工作室,这将是迄今为止您最好的选择。如果出于某种原因,您需要通过命令提示符或脚本来完成,这是可能的,但实际上并非如此。查看一般帮助。

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

最简单的方法是使用数据库管理器。例如,我知道phpMyAdmin有一个导出功能,并且很容易使用(这很好,我将链接一篇文章,可以帮助您实现这一点)。MySQL工作台也有一个

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

MySQL: 您可以使用命令行,导航到输出文件所在的文件夹,然后输入以下命令:

mysqldump --add-drop-table -u admin -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql
请注意,这将导出可能不是您想要的整个数据库。请看一本很好的指南。如果您想要更具字段选择性的内容(使用SELECT),请尝试一下:

SELECT order_id,product_name INTO outfile 'full_path/orders.csv' fields terminated BY ',' from orders;
甲骨文: 您应该能够使用以下命令:

exp username/password PARAMETER=(value1,value2,...,valuen)
这是一个更复杂的问题,我建议检查他们的官方文件以便出口

MS SQL: 这可能是最好的。您最好的选择是使用server management studio,因为它非常简单,我想不起来了,也找不到任何简单的命令来执行此操作。您可以使用bcp命令(在cmd中)执行某些操作

真相:
使用服务器管理工作室,这将是迄今为止您最好的选择。如果出于某种原因,您需要通过命令提示符或脚本来完成,这是可能的,但实际上并非如此。查看一般帮助。

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

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

每个数据库都有自己的语法。没有通用语法。您需要为每个数据库单独提问。@GordonLinoff感谢您的重播。但是我正在测试我对oracle表的查询。我将为不同数据库上的每个表编写单独的sql语句。sql server中的bcp命令是您应该研究的内容。每个数据库对此都有自己的语法。没有通用语法。您需要为每个数据库单独提问。@GordonLinoff感谢您的重播。但是我正在测试我对oracle表的查询。我将为不同数据库上的每个表编写单独的sql语句。sql server中的bcp命令是您应该研究的内容