Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 向表大容量插入数据时,从文件中删除引号字符_Sql_Sql Server_Tsql_Bulk Load - Fatal编程技术网

Sql 向表大容量插入数据时,从文件中删除引号字符

Sql 向表大容量插入数据时,从文件中删除引号字符,sql,sql-server,tsql,bulk-load,Sql,Sql Server,Tsql,Bulk Load,这是用户表 CREATE TABLE Users ( Id INT PRIMARY KEY IDENTITY(0,1), Name NVARCHAR(20) NOT NULL, Surname NVARCHAR(25) NOT NULL, Email NVARCHAR(30), Facebook NVARCHAR(30), CHECK(Email IS NOT NULL OR Facebook IS NOT NULL) ); 这是批量插入 B

这是
用户

CREATE TABLE Users
(
    Id INT PRIMARY KEY IDENTITY(0,1),
    Name NVARCHAR(20) NOT NULL,
    Surname NVARCHAR(25) NOT NULL,
    Email NVARCHAR(30), 
    Facebook NVARCHAR(30),

    CHECK(Email IS NOT NULL OR Facebook IS NOT NULL)
);
这是批量插入

BULK INSERT Users
FROM 'C:\Users\SAMIR\Downloads\Telegram Desktop\users.txt'
WITH (
      FIELDTERMINATOR = ',',
      ROWTERMINATOR = '\n',
      --FIRSTROW = 0,
      --UTF-8
      CODEPAGE = '65001'
);
这就是
Users.txt
文件数据:

`1, N'Alex', N'Mituchin', N'qwe@gmail.com', NULL`

当我从文件加载数据时,它将
Username
设置为
N'Alex'
等值。但是我想要的是像Alex那样的数据。如何解决此问题?

我建议将数据加载到一个暂存表中,其中的值是字符串

然后,您可以使用简单的查询来获得最终结果。在这种情况下,您可以执行以下操作:

select (case when name like 'N''%'''
             then substring(name, 2, len(name) - 3)
             else name
        end) as name
from staging

有一个更好的选择。如果字符串分隔符和unicode指示符一致(它们在所有行上都存在),则应使用一个格式文件,在该文件中可以为每一列指定分隔符。这将允许您将
,N'
设置为第一列和第二列之间的分隔符,
,N'
设置为第二列和第三列之间的分隔符,依此类推。

如何加载数据?哦。我必须添加批量插入示例。请显示用于将
Users.txt
加载到数据库中的脚本/方法请再次查看。我编辑了我的问题,尝试将
DATAFILETYPE='widechar'
添加到查询的
部分。这告诉批量插入在批量导入数据时使用Unicode字符格式。看:谢谢!从文件中加载数据时,无法剪切引号字符。在这种情况下,我必须写入触发器(当数据包含到带有更新代码块的表集合数据中时)。我想知道在将数据加载到表中时如何剪切数据。@SamirHemzeyev。可能有。我认为这是将数据导入数据库的最简单、最通用的解决方案。