Sql server 在SSIS导出中自动转义引号
我正在使用SQL Server 2014和SSIS 我有这样一个数据集:Sql server 在SSIS导出中自动转义引号,sql-server,csv,ssis,etl,Sql Server,Csv,Ssis,Etl,我正在使用SQL Server 2014和SSIS 我有这样一个数据集: ID Name Status 1 Awesome "Store" Active 2 Market, Place Active 3 Vendor Active 在SSMS中,当结果位于网格中时,我右键单击并选择“将结果另存为CSV”,原始输出如下: ID,Name,Status 1,"Awesome ""Store""",Active 2,"
ID Name Status
1 Awesome "Store" Active
2 Market, Place Active
3 Vendor Active
在SSMS中,当结果位于网格中时,我右键单击并选择“将结果另存为CSV”,原始输出如下:
ID,Name,Status
1,"Awesome ""Store""",Active
2,"Market, Place",Active
3,Vendor,Active
我需要使用SSIS将数据从数据库导出到CSV文件,以便原始输出与上面完全相同。每次我需要为新数据集执行此操作时,我不想执行任何派生列来替换字符串或任何自定义解决方案
我曾尝试使用平面文件目标并将文本限定符设置为“
”,但它在每个值周围都加上引号(这不是什么大问题),但它没有将Awesome“Store”
中的现有引号转义到Awesome“Store”
,这是我面临的主要问题
有没有人有一个解决方案可以满足我的要求?谢谢!编辑TextQualified属性
要尝试的一件事是,在平面文件连接管理器中,将文本限定符设置为”
,然后转到“高级”选项卡,并将第一列和最后一列的TextQualified
属性更改为False
如果这不起作用,我不认为没有派生列或其他转换就可以直接实现这一点。因此,您可以做的最佳解决方法是将目标平面文件中的列分隔符更改为Tab(或任何不同于逗号
,
)在每个值周围加引号正是“文本限定”的意思。您要问的是如何转义字段值内现有的双引号快速脏解决方案是在目标之前添加派生列转换,并将“
字符替换为”“
@PanagiotisKanavos是的,但我特别说过我不想做派生专栏,因为你可能运气不好。CSV是一种定义松散的“格式”。平面文件目标
旨在快速导出文本,而不是创建可以覆盖所有约定(如引用文本限定符或允许字段内使用字段/行分隔符)的CSV。您可能需要安装第三方目标或使用脚本目标。请使用源数据中没有的逗号管道(|)以外的分隔符。不幸的是,我不能真正使用任何其他类型的分隔符,因为我处理的数据几乎包含所有可能的字符,包括制表符,在某个字段中。@MikeDeluca您是否尝试过我的第一个建议,将ID
和Status
列的TextQualified属性更改为False
,并将其True
保留为Name
column是的,这不会影响任何内容。@Yahfoufi文本限定符在整个字段周围加上引号,它不会在字段中转义引号。因此,结果可能最终是“Awesome”Store“”
,但这是不正确的,因为它需要“Awesome”Store“”
@mikedluca。我认为如果没有派生列或脚本组件,就无法实现这一点。这是您在不进行转换的情况下所能做的最好的事情。