SQL SERVER导出特殊格式的平面文件

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

 有时候我们需要将SQL SERVER的数据一次性导入到ORACLE中,对于数据量大的表。我一般习惯先从SQL SERVER导出特殊格式的平面文件(CSV或TXT),然后用SQL*Loader装载数据到ORACLE数据库。 有时候由于一些特殊数据,我们需要导出一些特殊格式的文件,例如:

    1:导出的平面文件,字段分隔符不要用逗号, 而使用其它分隔符,例如 | 或 &等

    2:我们需要一些我们需要导出的CSV格式的文件,每个字段都用双引号“”括起来

1:导出的平面文件,字段分隔符不要用逗号, 而使用其它分隔符,例如 | 或 &等

我 们先看问题1吧,例如,我们需要导出sys.objects下所有对象,在查询结果中选中所有对象,然后单击右键,选择”Save Results As"时有可以保持为CSV、TXT或其它文件格式, 此时默认的分隔符都为逗号,如果我想用|或&等特殊字符来分隔字段,怎么处理呢?

clipboard

 

方法1:

在 SSMS的“工具”->"选项“->"查询结果"(Query Results)->"SQL SERVER"->"Results to Text" 下选项Custom delimiter选项,我们选择|作为分隔符(遗憾的是分隔符似乎只能用一个字符,我想要@#$这样的分隔符无法实现)

clipboard[1]

然 后在菜单栏上点击“Results to File”, 点击执行语句就会将结果保存到文本文件或CSV文件中,此时你去查看导出结果,就会发现分隔符为“|”了。  注意,如果你使用“Save Results As" 导出文本文件或CSV格式文件,你会发现永远都是逗号为分隔符。

clipboard[2]

这种方式还有一个最遗憾的就是不能将字段值用双引号括起来。不像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#代码实现。

相关文章
|
8月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
226 4
|
8月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
1738 0
|
8月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
11月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
SQL 数据库
DBeaver执行sql文件
本文介绍了DBeaver这款支持多种数据库的通用数据库管理工具和SQL客户端,它具备查看数据库结构、执行SQL查询和脚本、浏览和导出数据等功能。
1717 1
DBeaver执行sql文件
|
SQL 关系型数据库 MySQL
|
SQL 数据库
为什么 SQL 日志文件很大,我应该如何处理?
为什么 SQL 日志文件很大,我应该如何处理?
|
SQL 关系型数据库 Shell
SQL整库导出语录及其实用技巧与方法
在数据库管理和备份恢复过程中,整库导出是一项至关重要的任务
|
SQL Oracle 关系型数据库
SQL整库导出语录:全面解析与高效执行策略
在数据库管理和维护过程中,整库导出是一项常见的需求,无论是为了备份、迁移还是数据分析,掌握如何高效、准确地导出整个数据库至关重要

热门文章

最新文章