我已经将它与SQL Server 2012 64位一起使用了!
我正在使用SQL查询Oracle创建SSIS包,并尝试将文件放入平面文件中。我将Oracle OLEDB源和平面文件目标用于输出。一切在本地都可以正常工作,但是当将其放置在服务器上并通过SQL Agent运行时,我总是使Unicode变为非unicode错误!
最新的驱动程序在服务器上,而11g客户端在我的开发计算机上。每个步骤中显示的类型显示为DT-STR。
我有完全相同的源代码写入OLEDB目标。我不想将它们写到表中然后再将它们拉出来只是为了使它起作用。有什么办法吗?而且,请不要“仅添加此内容”答复。
我尝试了数据转换,但得到了相同的结果。请在此处提供详细的答案,并将其更改为此。图片永无伤害。谢谢
答案 0 :(得分:0)
简短的回答是,您需要转换代码页,而不是数据类型。
长答案如下:
第0步:如果尚未使用它,我强烈建议您切换到使用Attunity连接器,而不要使用库存的Oracle OLEDB连接器。您可以从以下位置从Microsoft下载SQL2012的版本:https://www.microsoft.com/en-us/download/details.aspx?id=29283
步骤1:使用Attunity Oracle Source,您可以将SQL Command指定为数据访问模式,而不仅仅是指向表。
步骤2:您需要确定Oracle服务器正在使用的确切代码页以及SQL服务器正在使用的确切代码页。对于使用UTF-8字符集的Oracle服务器,很可能是AL32UTF8
,对于使用默认ANSI-1252字符集的Windows Server,代码页是WE8MSWIN1252
。
第3步:编写您的plsql查询,并CONVERT
编写Oracle端所有列的代码页。确保在Oracle列名称周围使用双引号。它应该看起来像这样:
SELECT
CONVERT("Data Source Code",'AL32UTF8','WE8MSWIN1252') AS DataSourceCode
,CONVERT("Order#",'AL32UTF8','WE8MSWIN1252') AS OrderNumber
,CONVERT("Invoice#",'AL32UTF8','WE8MSWIN1252') AS InvoiceNumber
,CONVERT("Item#",'AL32UTF8','WE8MSWIN1252') AS ItemNumber
,CONVERT("Order Line Type",'AL32UTF8','WE8MSWIN1252') AS OrderLineType
,CONVERT("Order Status",'AL32UTF8','WE8MSWIN1252') AS OrderStatus
,CONVERT("Order Date",'AL32UTF8','WE8MSWIN1252') AS OrderDate
,CONVERT("Invoice Date",'AL32UTF8','WE8MSWIN1252') AS InvoiceDate
,CONVERT("Ship To Cust#",'AL32UTF8','WE8MSWIN1252') AS ShipToCustNumber
,CONVERT("Billing Account #",'AL32UTF8','WE8MSWIN1252') AS BillingAccountNumber
,CONVERT("Sold Qty",'AL32UTF8','WE8MSWIN1252') AS SoldQty
,CONVERT("Unit Price",'AL32UTF8','WE8MSWIN1252') AS UnitPrice
,CONVERT("Sales Amount",'AL32UTF8','WE8MSWIN1252') AS SalesAmount
,CONVERT("Handling Amount",'AL32UTF8','WE8MSWIN1252') AS HandlingAmount
,CONVERT("Freight Amount",'AL32UTF8','WE8MSWIN1252') AS FreightAmount
FROM MYORACLEDB.DIGITAL_SALES_FEED
WHERE "Invoice Date" >= TO_DATE('2018/08/01', 'yyyy/mm/dd')
步骤4:在Oracle Source配置窗口中将此查询文本用作SQL command text
。
事实简介:无论您使用AS ColumnName
格式如何,Oracle都会以ALL CAPS返回列名称。
第5步(可选):所有列将作为字符串返回。您可能想在数据流中放置一个Data Conversion
任务,但是如果您只是将数据转储到平面文件中,则可能不必关心数据转换。我的数据集中有十进制/数字和日期,因此在插入SQL Server之前先进行转换。