有时候我们需要将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#代码实现。

SQL SERVER导出特殊格式的平面文件的更多相关文章

  1. sql server 导出的datetime结果 CAST(0x00009E0E0095524F AS DateTime) 如何向mysql,oracle等数据库进行转换

    1. 处理 sql server 导出的 datetime 类型的字段 在进行sql server向mysql等其他数据进行迁移数据时,会发现使用sql server导出的datetime类型的结果是 ...

  2. SQL Server日期时间格式转换字符串详解 (详询请加qq:2085920154)

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  3. SQL Server日期时间格式转换字符串

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  4. SQL Server日期时间格式转换字符串详解

    本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助. 在SQL Server数据库中,SQL Server日期时间格 ...

  5. sql server导出数据,远程连接失败,需要设置权限

    在sql  server management中右键当前连接——>方面 在 服务器配置中 将  RemoteAccessEnabled.RemoteDacEnabled设置为TRUE 安全性—— ...

  6. SQL Server 导出Excel有换行的解决方法

    参考地址::https://vcoo.cc/blog/1234/ 从 SQL Server 查询结果中复制结果数据粘贴到 Excel 中存在这么个问题:如果字段内容中有换行符,那么粘贴到 Excel ...

  7. 如何从sql server导出到csv文件

    如何从sql server导出到csv文件,具体代码如下: private static void WriteHeader(SqlDataReader reader, TextWriter outpu ...

  8. SQL server 导出平面文件时出错: The code page on Destination - 3_txt.Inputs[Flat File Destination Input].Columns[UserId] is 936 and is required to be 1252.

    我在导出平面文件时:Error 0xc00470d4: Data Flow Task 1: The code page on Destination - 3_txt.Inputs[Flat File ...

  9. SQL Server 导出数据到 PostgreSQL

    乘着倒数据这会儿,把方法记录一下 需求:因为数据迁移,需要将SQL Server 2012中的数据库导入到PostgreSQL 数据库中 思路:创建一个空的数据库,便于导入数据.下载PostgreSQ ...

随机推荐

  1. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  2. 记录一则数据库连接故障ORA-12560,ORA-12518

    环境:Win Server 2008 R2 + Oracle 11.2.0.1 故障:客户反映数据库连接不上,本机sysdba和网络连接都连接不上. 一.确认故障 1.1 服务器尝试sysdba登录 ...

  3. 【十大经典数据挖掘算法】kNN

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 引言 顶级数据挖掘会议ICDM ...

  4. SQL Server里的文件和文件组

    在今天的文章里,我想谈下SQL Server里非常重要的话题:SQL Server如何处理文件的文件组.当你用CREATE DATABASE命令创建一个简单的数据库时,SQL Server为你创建2个 ...

  5. 使用CodeFirst创建并更新数据库

    本文主要介绍如何使用CodeFirst模式来新建并更新数据库 在使用Entity Framwork的三种方式(ModelFist.DBFirst.CodeFirst)中,CodeFirst方式书写的代 ...

  6. 我对Backbone.js的一些认识

    backbone.js已经不是当前最流行的前端框架了,但是对于我而言,依然具有比较好的学习价值.虽然目前来说,react,vue等mvvm框架非常火热,但是感觉自身还不到去使用这种框架的层次.这些技术 ...

  7. Xamarin.Android之封装个简单的网络请求类

    一.前言 回忆到上篇 <Xamarin.Android再体验之简单的登录Demo> 做登录时,用的是GET的请求,还用的是同步, 于是现在将其简单的改写,做了个简单的封装,包含基于Http ...

  8. [WCF编程]8.服务实例的生命周期

    一.服务实例的生命周期概览 我们已经直到,通过显式调用Close方法或等待默认的超时时间到来,都可以释放服务实例.但是,在会话连接里,经常需要按一定顺序调用方法. 二.分步操作 会话契约的操作有时隐含 ...

  9. Java并发编程:Thread类的使用

    Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...

  10. Idea创建Maven项目