问题
I've thoroughly searched Stack Overflow as well as many other resources but still have an issue. Here's my export script, running under Cygwin:
#!/usr/bin/env bash
#-*- coding: cp1255; -*-
bcp "declare @billing_types table(k int null, t varchar(14)
collate SQL_Latin1_General_CP1255_CI_AS)
insert @billing_types
values (null, 'לא פעיל')
,(1, 'אשרי')
,(2, 'צ׳ק')
,(3, 'הוראת קבע')
declare @standing_order_status table(i int null, s varchar(14)
collate SQL_Latin1_General_CP1255_CI_AS)
insert @standing_order_status
values (null, 'אין')
,(4, 'מבותל')
,(3, 'לא מאושר')
,(2, 'ממתין')
,(1, 'מאושר')
select billing_company_id
,internal_company_name
, t collate SQL_Latin1_General_CP1255_CI_AS as payment_type_string
,isnull(company_email, '') collate SQL_Latin1_General_CP1255_CI_AS as email
,company_fax
,company_address
,company_comments
,invoice_send_with_details
,invoice_send_fax
,invoice_print
,cc_name
,cc_number
,cc_cvv
,cc_id
,cc_expire
,bank_number
,bank_branch
,bank_account
,bank_hoshen
,s collate SQL_Latin1_General_CP1255_CI_AS
from billing_companies
join @billing_types bt on bt.k = payment_type
join @standing_order_status os on os.i = bank_standing_order_status" \
queryout billing-companies.csv -t"," -r"\n" -S server -T \
-U user -P password -f ./billing-companies.fmt
Here's the format file:
9.0
20
1 BIGINT 0 1 "" 1 billing_company_id ""
2 VARCHAR 0 1000 "" 2 internal_company_name SQL_Latin1_General_CP1255_CI_AS
3 VARCHAR 0 14 "" 3 payment_type_string SQL_Latin1_General_CP1255_CI_AS
4 VARCHAR 0 200 "" 4 email SQL_Latin1_General_CP1255_CI_AS
5 VARCHAR 0 100 "" 5 company_fax SQL_Latin1_General_CP1255_CI_AS
6 VARCHAR 0 4000 "" 6 company_address SQL_LATIN1_GENERAL_CP1255_CI_AS
7 NTEXT 0 1 "" 7 company_comments SQL_LATIN1_GENERAL_CP1255_CI_AS
8 BIT 0 1 "" 8 invoice_send_with_details ""
9 BIT 0 1 "" 9 invoice_send_fax ""
10 BIT 0 1 "" 10 invoice_print ""
11 VARCHAR 0 200 "" 11 cc_name SQL_LATIN1_GENERAL_CP1255_CI_AS
12 VARCHAR 0 50 "" 12 cc_number SQL_LATIN1_GENERAL_CP1255_CI_AS
13 VARCHAR 0 50 "" 13 cc_cvv SQL_LATIN1_GENERAL_CP1255_CI_AS
14 VARCHAR 0 50 "" 14 cc_id SQL_LATIN1_GENERAL_CP1255_CI_AS
15 VARCHAR 0 50 "" 15 cc_expire SQL_LATIN1_GENERAL_CP1255_CI_AS
16 VARCHAR 0 100 "" 16 bank_number SQL_LATIN1_GENERAL_CP1255_CI_AS
17 VARCHAR 0 100 "" 17 bank_branch SQL_LATIN1_GENERAL_CP1255_CI_AS
18 VARCHAR 0 100 "" 18 bank_account SQL_LATIN1_GENERAL_CP1255_CI_AS
19 INT 0 1 "" 19 bank_hoshen ""
20 varchar 0 14 "" 20 standing_order_status SQL_LATIN1_GENERAL_CP1255_CI_AS
The collation matches the collation in the database. When I run the query in the studio, I'm getting the expected result, no warnings.
Perhaps here's a caveat: the database uses single-byte prehistoric Hebrew encoding... and I'm not sure whether Cygwin, or anyone later after it isn't trying to convert between encodings. However I've doublechekced that I did my part properly. I.e. the script file is itself in cp-1255.
It works if I remove all mentions of Hebrew from the script. So, I'm guessing this must be the problem, however, I've no idea of how would I solve it.
回答1:
Have you tried using the -C switch to specify a specific code page?
Here's the BCP syntax page from Books Online:
http://msdn.microsoft.com/en-us/library/ms162802.aspx
Looking here, it looks like you may want to use code page 1255:
http://msdn.microsoft.com/en-us/library/ms186356(v=sql.105).aspx
HTH.
来源:https://stackoverflow.com/questions/15383511/bcp-fails-to-export-with-error-unable-to-resolve-column-level-collation