SQL Veri Ambarı'nda (düzenleyiciler lütfen bunu değiştirmeyin, gerçek adı bkz: here) Bu gibi görünen bir JobCandidate_ext
dış tablom var.SQL Veri Ambarı'nda Harici Tablolar oluştururken/seçerken gömülü yeni satırları işleme
CREATE EXTERNAL TABLE [HumanResources].[JobCandidate_ext](
[JobCandidateID] int,
[BusinessEntityID] int,
[Resume] Varchar(8000),
[ModifiedDate] Datetime
)
WITH (
LOCATION='/[HumanResources].[JobCandidate]/data.txt',
DATA_SOURCE=AzureStorage,
FILE_FORMAT=TextFile)
GO
kolon [Resume]
here açıklandığı gibi, SQL Server ancak SQL Veri Ambarı XML türlerinde bir XML
tip varchar(8000)
dönüştürülmesi gerekir oldu.
Verileri bir blob dosyasına dışa aktarmak ve daha sonra bir dış tablo oluşturmak için düz bir dosya data.txt
kullanıyorum.
[Resume]
sütununda satır başı (XML dosyasından beklendiği gibi) vardır ve böylece bir SELECT * FROM [HumanResources].[JobCandidate_ext]
çalıştırdığınızda hata alırsınız. Bu durumda:
Query aborted-- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 2 rows processed.
(/[HumanResources].[JobCandidate]/data.txt)Column ordinal: 0, Expected data type: INT, Offending value: some text .... (Column Conversion Error), Error: Error converting data type NVARCHAR to INT.
Ben here açıklandığı gibi dış tablo oluştururken bir satır sınırlayıcı yapılandırmak olamayacağını biliyoruz.
The row delimiter must be UTF-8 and supported by Hadoop’s LineRecordReader. The row delimiter must be either '\r', '\n', or '\r\n'. These are not user-configurable.
Ve dış tablodan satırları seçerken bu hatayı her sütun sahada tırnak koymak denerseniz: No closing string delimiter
.
Query aborted-- the maximum reject threshold (0 rows) was reached while reading from an external source: 1 rows rejected out of total 1 rows processed.
(/[HumanResources].[JobCandidate]/data.txt)Column ordinal: 2, Expected data type: VARCHAR(8000) collate SQL_Latin1_General_CP1_CI_AS, Offending value: 'ShaiBassli (Tokenization failed), Error: No closing string delimiter.
Bu sorunun üstesinden gelmenin bir yolu var mı?
Maalesef, dize sınırlayıcısı ve satır sınırlayıcısının verilerinde hiç görünmeyen karakterler olmasını sağlamak dışında, bu soruna geçici bir yol olduğunu düşünmüyorum. Lütfen oy verin: https://feedback.azure.com/forums/307516-sql-data-warehouse/suggestions/10600132-polybase-allow-line-ends-within-qualified-text-f – GregGalloway