1

Stack Overflowや他の多くのリソースを徹底的に検索しましたが、まだ問題があります。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

フォーマットファイルは次のとおりです。

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

照合は、データベース内の照合と一致します。スタジオでクエリを実行すると、期待どおりの結果が得られますが、警告は表示されません。

おそらくここに警告があります:データベースはシングルバイトの先史時代のヘブライ語エンコーディングを使用しています...そしてCygwinか、それ以降の誰かがエンコーディング間で変換を試みていないかどうかはわかりません。しかし、私は自分の役割を適切に果たしたことを二重に考えました。つまり、スクリプトファイル自体はcp-1255にあります。

スクリプトからヘブライ語のすべての言及を削除すると機能します。ですから、これが問題だと思いますが、どうすれば解決できるのかわかりません。

4

1 に答える 1

0

-C スイッチを使用して特定のコード ページを指定しようとしましたか?

Books Online の BCP 構文ページは次のとおりです。

http://msdn.microsoft.com/en-us/library/ms162802.aspx

ここを見ると、コード ページ 1255 を使用する必要があるように見えます。

http://msdn.microsoft.com/en-us/library/ms186356(v=sql.105).aspx

HTH。

于 2013-03-13T20:24:54.603 に答える