SQL SERVER导出特殊格式的平面文件
有时候我们需要将SQL SERVER的数据一次性导入到ORACLE中,对于数据量大的表。我一般习惯先从SQL SERVER导出特殊格式的平面文件(CSV或TXT),然后用SQL*Loader装载数据到ORACLE数据库。 有时候由于一些特殊数据,我们需要导出一些特殊格式的文件,例如:
1:导出的平面文件,字段分隔符不要用逗号, 而使用其它分隔符,例如 | 或 &等
2:我们需要一些我们需要导出的CSV格式的文件,每个字段都用双引号“”括起来
1:导出的平面文件,字段分隔符不要用逗号, 而使用其它分隔符,例如 | 或 &等
我们先看问题1吧,例如,我们需要导出sys.objects下所有对象,在查询结果中选中所有对象,然后单击右键,选择”Save Results As"时有可以保持为CSV、TXT或其它文件格式, 此时默认的分隔符都为逗号,如果我想用|或&等特殊字符来分隔字段,怎么处理呢?
方法1:
在SSMS的“工具”->"选项“->"查询结果"(Query Results)->"SQL SERVER"->"Results to Text" 下选项Custom delimiter选项,我们选择|作为分隔符(遗憾的是分隔符似乎只能用一个字符,我想要@#$这样的分隔符无法实现)
然后在菜单栏上点击“Results to File”, 点击执行语句就会将结果保存到文本文件或CSV文件中,此时你去查看导出结果,就会发现分隔符为“|”了。 注意,如果你使用“Save Results As" 导出文本文件或CSV格式文件,你会发现永远都是逗号为分隔符。
这种方式还有一个最遗憾的就是不能将字段值用双引号括起来。不像PL/SQL Developer这样的工具可以实现这样的功能
方法2:
借助bcp参数-t指定字符分割符,默认是"\t"。
bcp "SELECT * FROM sys.tables;" QUERYOUT "E:\test.csv" -c -t "|" -q -T -S localhost
方法3:
使用SQL将各个字段拼接起来。
方法4:
C#程序实现,当然是相当麻烦,如果愿意痛苦一次,方便以后,这种方法也是可行的。
2:我们需要导出的CSV格式的文件,每个字段都用双引号“”括起来
这个是否无法借助SSMS客户端工具的配置来完成,我倒是有几个方法间接来实现,不过都有些麻烦
1: SQL语句拼接,然后选择所有结果,导出为csv格式。
SELECT '"' + COLUMNS1 + '"' ,
'"' + COLUMNS2 + '"' ,
'"' + COLUMNS3 + '"' ,
'"' + COLUMNS4 + '"' ,
'"' + COLUMNS5 + '"' ,
'"' + COLUMNS6 + '"' ,
'"' + COLUMNS7 + '"' ,
'"' + COLUMNS8 + '"' ,
'"' + COLUMNS9 + '"'
FROM dbo.TABLE_NAME;
2:借助bcp工具的参数-t指定字符分割符,默认是"\t"。
bcp "SELECT * FROM sys.tables;" QUERYOUT "E:\test.csv" -c -t "\",\"" -q -T -S localhost
这种方法导出的文件,第一个字段和最后一个字段都没有的双引号都不全,如果你熟悉UltraEdit,那么你可以很快的用列模式和替换方式补全。另外就是在SQL语句里面分别给第一个字段前面后最后一个字段后面添加双引号解决问题。
3:C#代码实现。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
DBCC SHRINKDATABASE xxxx was skipped because the file does not have en...
原文: DBCC SHRINKDATABASE xxxx was skipped because the file does not have enough free 假设你创建一个数据库时,指定其初始化大小(SIZE )非常大。例如,如下测试案例所示 USE [master] GO CREATEDATABASE [TEST] ON PRIMARY ( NAME = N'TEST_Data', FILENAME = N'D:\SQL_DATA\TEST_Data.mdf' , SIZE = 11527027KB , MAXSIZE = UNLIMITED, FILEGROWTH = 102400KB ) LOG ON ( NAME = N'TEST_log', FILENAME = N'D:\SQL_LOG\TEST_log.ldf' , SIZE = 40350KB , MAXSIZE = 2048GB , FILEGROWTH = 32768KB ) GO 此时我们检查数据库的空间使用情况如下所示: USE TEST; GO EXEC SP_SPACEUSED; 然后你使用...
- 下一篇
HDFS DataNode启动异常:/opt/jdk1.8.0_151/bin/java:权限不够
版权声明:本文由董可伦首发于https://dongkelun.com,非商业转载请注明作者及原创出处。商业转载请联系作者本人。 https://blog.csdn.net/dkl12/article/details/81381102 我的原创地址:https://dongkelun.com/2018/07/10/HadoopException/ 前言 这个异常是在在ambari里启动DataNode产生的,其实这个问题很久就发现了,只是没时间去处理,所以之前把发生问题的slave1节点给移除了,现在有时间处理,就又把slave1加上了,所以就有了ambari 异常总结及解决办法里面的问题,这个java权限不够的问题,在添加slave1之后,并安装datanode和nodemanager之后启动服务依然报错。 异常信息: /usr/hdp/2.6.4.0-91//hadoop-hdfs/bin/hdfs.distro:行317: /opt/jdk1.8.0_151/bin/java: 权限不够 /usr/hdp/2.6.4.0-91//hadoop-hdfs/bin/hdfs.dist...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题