我试图使用SQL Server bcp实用程序从Samba共享导入文本文件。 BCP是窒息在Unix行结尾。我敢肯定,我可以添加一个中间步骤,无论是在Unix或Windows,改变行结束Windows风格。但我更愿意从Unix导入文件而无需修改。

任何人都知道,如果有一种方法来告诉SQL Server的BCP寻找Unix行结尾?

有帮助吗?

解决方案

您必须使用与BCP格式文件,并指定终止子\ n。交互式命令行总是附加\ r,其中一个格式文件将使用完全相同您指定的内容。参考 HTTP:// WWW .eggheadcafe.com /软件/ ASPNET / 32239836 / BCP出与 - char10-AS-行terminator.aspx

创建于BOL但注释格式文件解释相当不错/如果你需要帮助,更新原来的职位。

其他提示

简单的答案是使用十六进制,如在评论中的一个所提到的,作为行终止:

-r 0x0a

你试图设置ROWTERMINATOR = '\ n'?

我不认为你可以从BCP命令行做到这一点。但是,我认为下面的SQL版本会工作。

DECLARE @Command nvarchar(1000)

SET @Command = N'BULK INSERT MyTable
FROM ''<path\file>''
WITH (ROWTERMINATOR = '''+CHAR(10)+''')'

exec sp_executeSQL @Command

如果你没有很多时间来研究的很详细BCP,看看这个: http://msdn.microsoft.com/en-us/library/ms190759。 ASPX

这会给你简单的例子,说明什么交互式提示的意思,选项,保存格式一旦你完成(如果你要反复做这个)等等等等。

如果你的数据是大和/或你有几个filds你愿意,你可以做一个表,然后首先做一个小小的实验导出(BCP将采取一个简单的选择为第一个参),仍然挑格式交互,列经柱。如果你有一些额外的原因,你可以挖掘到保存文件格式化后者。

是,这是郁闷了。我的理解是,SQL Server的BCP任何行终止你所期望的使用之前,一定要先插入\ r。所以,如果你不使用-r,您希望它使用\ n只。但事实并非如此......这愚蠢插入\ r,以便它可以使用\ r \ n。如果指定-r \ r \ n那么它仍然无法工作;我怀疑,因为它现在希望\ r \ r \ n行结束。这是一些白痴编码Windows世界试图让初学者更简单的生活,结束使事情在附近上不可能每个人的所有工作。从Sybase传送文件时,SQL服务器我遇到过这个问题,解决办法是指定-r \ r \ n在从Sybase(该工程完全按照你要求它!)和-R \ -N(或只是不将BCP出来“T使用-r),用于在SQL Server BCP。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top