慕3829 发表于 2016-7-7 08:55:27

Oracle->CSV , CSV->Sqlite3

Oracle的数据导出到CSV需要在SQLPlus中使用spool将标准输出定向到csv文件,
有很多set *** off的选项,为了避免在生成的csv文件中有多余的注释或者行头或者其它信息,看自己需要选择。
比如:

spool常用的设置
set colsep' ';    //域输出分隔符
set echo off;    //显示start启动的脚本中的每个sql命令,缺省为on
set feedback off;  //回显本次sql命令处理的记录条数,缺省为on
set heading off;   //输出域标题,缺省为on
set pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。
set termout off;   //显示脚本中的命令的执行结果,缺省为on
set trimout on;   //去除标准输出每行的拖尾空格,缺省为off
set trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off

通过spool指定输出的文件
spool UdbUser.csv

执行完毕后要关掉重定向
spool off


csv导入到Sqlite3中很方便,
网上有个导入导出csv到Sqlite3的记录,转过来:
http://blog.iyunv.com/u/10686/showart_585970.html 写道

导入
命令: .import
sqlite> .import 文件名 表名
注1: 不要忘了开头的点
注2: 这条语句不能用分号结束. 非SQL不需要分号结束.
注3: 需要查看默认的分隔符separator. 必须一致. 如果不一致可能导致sqlite字段分割错误.
      查看分隔符使用命令.show , 如果不一致可直接修改, 比如:
      sqlite>.separator ","
      将分隔符转为逗号.
举例1:
将文件a.csv中的数据导入表 tab_xx. (a.csv中字段以逗号分割)
sqlite> .separator ","
sqlite> .import a.csv tab_xx
sqlite>
导入结束.
导出
实现方式: 将输出重定向至文件.
命令: .output
sqlite> .output a.txt
然后输入sql语句, 查询出要导的数据. 查询后,数据不会显示在屏幕上,而直接写入文件.
结束后,输入
sqlite> .output stdout
将输出重定向至屏幕.
举例2:
将 tab_xx 中的数据导出到文件a.txt
sqlite> .output a.txt
sqlite> select * from tab_xx;
sqlite> .output stdout
导出完毕.


补充:
sql plus里面,
set linesize ***//一定要设置的大一些,但不能太大,设置小了,会发现每行数据都会换行,就无法导入Sqlite3中了。
页: [1]
查看完整版本: Oracle->CSV , CSV->Sqlite3