我有一個簡單的 CSV 檔案,其中包含 60 行資料,如下所示:
"Name","City","Region","Primary Phone","Postal Code"
"MyCompany Inc.","Toronto","GTA"," 1 (416) 999-9999","M5G 1Z8"
...
在我的 SQL 查詢中,我使用bulk insert如下方式讀取檔案:
CREATE TABLE #RegionalOffices (
[REIT] [NVARCHAR](255) NULL,
[City] [NVARCHAR](255) NULL,
[Region] [NVARCHAR](255) NULL,
[PrimaryPhone] [NVARCHAR](255) NULL,
[PostalCode] [NVARCHAR](255) NULL
)
BULK INSERT #RegionalOffices
FROM 'C:\Scripts\regionaloffices.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '\n', --Use to shift the control to next row
CODEPAGE = '65000',
TABLOCK
)
當我這樣做時,我的資料在表格中的顯示方式如下select *:
Name City Region PrimaryPhone PostalCode
"MyCompany Inc." "Toronto" "GTA" "(416) 999-9999" "M5G 1Z8"
我的問題是:國家代碼“ 1”沒有從 csv 檔案中出現,每隔一行都會發生同樣的情況,我不明白為什么會這樣。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
它對我有用。
我修改了 CODEPAGE = '65001'
從 SQL Server 2017 開始,多了一個引數BULK INSERTparameter FORMAT='CSV'。它洗掉了每列的雙引號分隔符。
查詢陳述句
USE tempdb;
GO
DROP TABLE IF EXISTS dbo.RegionalOffices;
CREATE TABLE dbo.RegionalOffices
(
[REIT] [NVARCHAR](255) NULL,
[City] [NVARCHAR](255) NULL,
[Region] [NVARCHAR](255) NULL,
[PrimaryPhone] [NVARCHAR](255) NULL,
[PostalCode] [NVARCHAR](255) NULL
);
BULK INSERT dbo.RegionalOffices
FROM 'e:\temp\regionaloffices.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '\n', --Use to shift the control to next row
CODEPAGE = '65001',
TABLOCK
)
-- test
SELECT * FROM dbo.RegionalOffices;
輸出
------------------ ----------- -------- --------------------- ------------
| REIT | City | Region | PrimaryPhone | PostalCode |
------------------ ----------- -------- --------------------- ------------
| "MyCompany Inc." | "Toronto" | "GTA" | " 1 (416) 999-9999" | "M5G 1Z8" |
------------------ ----------- -------- --------------------- ------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404974.html
標籤:
下一篇:SQL查詢在一張表中聚合月份
