簡體   English   中英

我需要使用 T-SQL 將 .csv 文件(從列中刪除某些字符)插入到 SSMS 中的表中

[英]I need to insert .csv file (stripping out a certain characters from a column) into a Table in SSMS, using T-SQL

我有以下 .csv 文件:

我需要使用 T-SQL 語句將此文件導入到具有相同字段的表 (MyTable) 中 - 在 SSMS 中。

我的導入結果還應該刪除 ID 列中“-”符號之前的所有字符

在此處輸入圖像描述

因此,我希望 SSMS 表中包含以下內容:

在此處輸入圖像描述

嘗試使用以下代碼,但我不熟悉正確的語法。 這是不正確的,我不知道正確的寫法。 另外,不確定這是否有可能實現:

      INSERT INTO myTable1 ([Name], [ID])

      SELECT 
            (Text1.[Name], 
             RIGHT(Text1.[ID]), LEN(Text1.[ID]) - Charindex('-', Text1.[ID]))
    
      FROM OPENROWSET(BULK 'E:\$_Data\OQ\Text1.csv', SINGLE_BLOB) AS ttt;

RIGHT(Text1.[ID]), LEN(Text1.[ID]) - Charindex('-', Text1.[ID])) - 這就是我在'-'之前刪除所有內容的地方,包括這個字符。 它適用於常規 SELECT OR JOIN 語句但不適用於此處

我建議將 OPENROWSET 與描述 CSV 文件中列的格式文件一起使用。 根據文檔,您的示例數據的 xml 格式文件可能如下所示:

<?xml version="1.0"?>
<BCPFORMAT    xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RECORD>
      <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="7"/>
      <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="20" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
    </RECORD>
    <ROW>
      <COLUMN SOURCE="1" NAME="Name" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="2" NAME="ID" xsi:type="SQLNVARCHAR"/>
    </ROW>
</BCPFORMAT>

然后,在 openrowset 語句中使用它:

SELECT 
     Name
    ,[ID]
FROM OPENROWSET (
    BULK N'path-to\test.csv',
    FIRSTROW=2,
    FORMATFILE = N'path-to\test-csv.xml'
) AS ttt;

最后,您的剝離代碼似乎語法錯誤 - RIGHT 需要兩個 arguments:

RIGHT([ID], LEN([ID]) - Charindex('-', [ID])) AS STRIPPED_ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM