我有一列包含描述,長度約為 80000(包含 unicode 字符)。我無法將其加載到 Azure Synapse Analytics。Synapse 中定義的資料型別是 nvarchar。我們正在使用 Azure Databricks。我嘗試了 maxStrLength (.option('maxStrLength', 4000)) 的選項,但它的最大值是 4000。所以,我收到了這個錯誤。
:com.databricks.spark.sqldw.SqlDWSideException:Azure Synapse Analytics 無法執行連接器生成的 JDBC 查詢。基礎 SQLException(s):
- com.microsoft.sqlserver.jdbc.SQLServerException:HdfsBridge::recordReaderFillBuffer - 填充記錄讀取器緩沖區時遇到意外錯誤:HadoopSqlException:字串或二進制資料將被截斷。[錯誤代碼 = 107090] [SQLState = S0001]
請問有什么辦法可以解決這個問題嗎?
更新 - 通過在將資料幀寫入 Synapse 并將目標資料型別宣告為 nvarchar(max) 時洗掉 .option('maxStrLength', 4000) 解決了該問題
uj5u.com熱心網友回復:
您可以通過使用存盤多達 10 億個 2 位元組 Unicode 字符nvarchar [ ( n | max ) ]。
可變長度的 Unicode 字串資料。n 定義字串長度,可以是 1 到 4,000 之間的值。max 表示最大存盤大小為 2^31-1 位元組(2 GB)。存盤大小(以位元組為單位)是輸入資料實際長度的兩倍 2 個位元組。nvarchar 的 ISO 同義詞是國家字符變化和國家字符變化。
您可以參考下面提到的相關 SO 執行緒:
SQL Server 如何在 NVARCHAR(max) 中存盤超過 4000 個字符?
SQL 查詢變數 nvarchar(max) 不能存盤超過 4000 個字符
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/405147.html
標籤:
