Sql-Server

修復 MSSQL 表中的 OGR2OGR “將 varchar 值轉換為數據類型 int 時失敗”問題 -

  • April 21, 2020

我是 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-in​​t

如何在表格中更改此內容?在此處輸入圖像描述

NCPR 是什麼意思-表格中不存在此文本-它為某些東西編碼?

**好消息:**你不會錯過任何明顯或神秘的東西。

**壞消息:**如果現場有合適的 DBA,是時候讓他們參與進來了。

美元對甜甜圈的錯誤object_definition()在於dbo.vw_AUTH_CREFNO。通常,vw_前綴表示對像是 a VIEW,這意味著它只是一個更大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

  • 字元串列JOINing 到某處的數字列
  • 介於字元串和數字之間的表達式(查找+-/*=字元)
  • 對基表中存在“臟數據”的值進行顯式轉換(無論是通過類型轉換還是合併為錯誤目標)
  • 別的東西?

如果您足夠幸運,它NCPR是程式碼中某處的字元串文字,但它嵌套在第一級對像下方並且仍在同一個GIS_Test數據庫中,您可以使用以下程式碼片段對其進行相當廣泛的探索。

select 
    def = object_definition([object_id]) 
   ,[name]
   ,schema_name([schema_id)
from sys.objects 
where object_definition([object_id]) like '%NCPR%';

如果你不是那麼幸運,你需要在基礎數據中尋找那個值,或者嘗試更高級的方法來尋找哪個(可能是幾個)有問題的表達式導致了你目前的問題。

祝你好運!¯_(ツ)_/¯

引用自:https://dba.stackexchange.com/questions/231726