修復 MSSQL 表中的 OGR2OGR “將 varchar 值轉換為數據類型 int 時失敗”問題 -
我是 MSSQL 的新手,我正在嘗試使用 OGR2OGR 將 MSSQL 表轉換為 Mapinfo Tab 文件,但在一些表上出現上述消息時一直失敗。
我試圖在 GIS SE 中獲得關於在 OGR2OGR 中應用開關的回复,但沒有任何選擇。https://gis.stackexchange.com/questions/314669/ogr2ogr-conversion-failed-when-converting-the-varchar-value-to-data-type-int
NCPR 是什麼意思-表格中不存在此文本-它為某些東西編碼?
**好消息:**你不會錯過任何明顯或神秘的東西。
**壞消息:**如果現場有合適的 DBA,是時候讓他們參與進來了。
美元對甜甜圈的錯誤
object_definition()
在於dbo.vw_AUTH_CREFNO
。通常,vw_
前綴表示對像是 aVIEW
,這意味著它只是一個更大SELECT
語句的包裝器,該語句本身可能有一系列寫得不好JOIN
的 s、格式錯誤的表達式和嵌套的求值。如果您在伺服器上的數據庫中擁有
VIEW DEFINITION
權限(並且對象未加密),那麼是時候嘗試提取基本定義並交叉手指,DDL 是明智地編寫的,這是一個明顯的錯誤。在該對象資源管理器窗格中,您已打開,右鍵點擊並點擊,然後+並希望您能在程式碼中找到作為字元串文字的地獄。更有可能的是,您擁有以下一項或多項GIS_Test``zzzz``dbo.vw_AUTH_CREFNO``Script View as
Create To
New Query Editor Window``Ctrl``f``NCPR
- 字元串列
JOIN
ing 到某處的數字列- 介於字元串和數字之間的表達式(查找
+-/*=
字元)- 對基表中存在“臟數據”的值進行顯式轉換(無論是通過類型轉換還是合併為錯誤目標)
- 別的東西?
如果您足夠幸運,它
NCPR
是程式碼中某處的字元串文字,但它嵌套在第一級對像下方並且仍在同一個GIS_Test
數據庫中,您可以使用以下程式碼片段對其進行相當廣泛的探索。select def = object_definition([object_id]) ,[name] ,schema_name([schema_id) from sys.objects where object_definition([object_id]) like '%NCPR%';
如果你不是那麼幸運,你需要在基礎數據中尋找那個值,或者嘗試更高級的方法來尋找哪個(可能是幾個)有問題的表達式導致了你目前的問題。
祝你好運!¯_(ツ)_/¯