[英]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.