Discussion:
How to force UNIX line endings with BCP.EXE's -r option
(too old to reply)
Thomas W. Brown
2008-09-16 16:55:01 UTC
Permalink
I want to export SQL data using BCP.EXE and for normal operation everything's
fine. The default record delimiter of "\n" gets mapped to 0x0D, 0x0A and
this works for the PC/Windows.

But when I want to export data for a UNIX system, I don't know how to tell
BCP to really just spit out a single line feed (0x0A) and not the CR/LF pair.
I can successfully export for Macintosh by using "-r \r" and only a 0x0D is
emitted.

Yes, I can play tricks like emitting just the CR and then running the output
through a tr-like utility to change the 0x0D characters into 0x0A, but it
sure would be nice to bcp out the data with the right record terminators to
begin with!!

Is there a way to tell bcp.exe *not* to cook the line endings and treat \n
as just a linefeed?!?

Regards,
-- TB
Erland Sommarskog
2008-09-16 22:00:13 UTC
Permalink
Post by Thomas W. Brown
I want to export SQL data using BCP.EXE and for normal operation
everything's fine. The default record delimiter of "\n" gets mapped to
0x0D, 0x0A and this works for the PC/Windows.
But when I want to export data for a UNIX system, I don't know how to
tell BCP to really just spit out a single line feed (0x0A) and not the
CR/LF pair.
I can successfully export for Macintosh by using "-r \r" and only a 0x0D
is emitted.
Yes, I can play tricks like emitting just the CR and then running the >
output through a tr-like utility to change the 0x0D characters into
0x0A, but it sure would be nice to bcp out the data with the right
record terminators to begin with!!
Is there a way to tell bcp.exe *not* to cook the line endings and treat \n
as just a linefeed?!?
You need to use a format file. In a format file \n means \n and not \r\n.
--
Erland Sommarskog, SQL Server MVP, ***@sommarskog.se

Links for SQL Server Books Online:
SQL 2008: http://msdn.microsoft.com/en-us/sqlserver/cc514207.aspx
SQL 2005: http://msdn.microsoft.com/en-us/sqlserver/bb895970.aspx
SQL 2000: http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
Thomas W. Brown
2008-09-16 22:12:01 UTC
Permalink
Post by Erland Sommarskog
Post by Thomas W. Brown
I want to export SQL data using BCP.EXE and for normal operation
everything's fine. The default record delimiter of "\n" gets mapped to
0x0D, 0x0A and this works for the PC/Windows.
But when I want to export data for a UNIX system, I don't know how to
tell BCP to really just spit out a single line feed (0x0A) and not the
CR/LF pair.
I can successfully export for Macintosh by using "-r \r" and only a 0x0D
is emitted.
Yes, I can play tricks like emitting just the CR and then running the >
output through a tr-like utility to change the 0x0D characters into
0x0A, but it sure would be nice to bcp out the data with the right
record terminators to begin with!!
Is there a way to tell bcp.exe *not* to cook the line endings and treat \n
as just a linefeed?!?
You need to use a format file. In a format file \n means \n and not \r\n.
--
Excellent, thanks!!

-- TB

Loading...