Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用文本文件大容量插入创建表_Sql Server - Fatal编程技术网

Sql server 使用文本文件大容量插入创建表

Sql server 使用文本文件大容量插入创建表,sql-server,Sql Server,我试图在SQLServer中使用大容量插入从文本文件创建一个表,但我一直得到大容量加载数据转换错误截断。我做错什么了吗?顶部是文本中的数据,下面是代码 '01','INPATIENT FACILITY','010','ACUTE CARE HOSPITAL' '01','INPATIENT FACILITY','011','PRIVATE PSYCHIATRIC HOSPITAL' '01','INPATIENT FACILITY','012','INPATIENT MEDICAL REHAB

我试图在SQLServer中使用大容量插入从文本文件创建一个表,但我一直得到大容量加载数据转换错误截断。我做错什么了吗?顶部是文本中的数据,下面是代码

'01','INPATIENT FACILITY','010','ACUTE CARE HOSPITAL'
'01','INPATIENT FACILITY','011','PRIVATE PSYCHIATRIC HOSPITAL'
'01','INPATIENT FACILITY','012','INPATIENT MEDICAL REHAB HOSPITAL'

CREATE TABLE [dbo].[PROVIDER_TYPE]
(
    [PROVIDER_TYPE_ID] [VARCHAR](2) NULL,
    [PROVIDER_TYPE] [VARCHAR](50) NULL,
    [PROVIDER_SPECIALITY_ID] [VARCHAR](3) NULL,
    [PROVIDER_SPECIALITY] [VARCHAR](50) NULL
) ON [PRIMARY]

BULK INSERT DBO.PROVIDER_TYPE FROM 'C:\SQL\t2.txt'
WITH (
    datafiletype = 'char'
    ,fieldterminator = ','
    ,ROWTERMINATOR = '\n'
)

第一个值不是2个字符长,而是4个字符。该值为'01';这包括单引号。这就是为什么会出现截断错误,因为如果要在T-SQL中表示字符串,则“01”“01”不适用于varchar2

如果您在SQL Server 2017+上,则可以使用格式和字段报价选项。请注意,我还使用\r\n作为行终止符,正如我在创建文件时使用的一样,如果您的行终止符只包含换行符而不包含回车符,则只使用\r\n:


如果您不使用SQL Server 2017+,那么它就不支持带引号的字段,我建议您使用其他工具。

。非常感谢。
BULK INSERT dbo.PROVIDER_TYPE FROM '/mnt/WDBlue/t2.txt' --This was my test file
WITH (DATAFILETYPE = 'char',
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\r\n',
      FORMAT = 'CSV',
      FIELDQUOTE = '''');