BULK INSERT:FlatFile 具有 FieldTerminator、Carriage Return 和 New Line 字符作为 RowTerminator
BULK INSERT: FlatFile having FieldTerminator, Carriage Return and New Line characters as RowTerminator
我正在尝试导入竖线分隔的平面文件,但出现以下错误:
Msg 4832, Level 16, State 1, Line 1
Bulk load: An unexpected end of file was encountered in the data file.
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
我的代码:
IF OBJECT_ID('tempdb..##tblImport') IS NOT NULL DROP TABLE tempdb..##tblImport;
CREATE Table ##tblImport (VoucherNumber BIGINT,Currency VARCHAR(100),VoucherAmount MONEY, RetailAmount MONEY, VoucherDuration INT, ServiceProviderGroupID INT, BatchNumber BIGINT, SerialNumber int)
DECLARE @SQL VARCHAR(2000)
DECLARE @FilePath VARCHAR(1000)
SET @FilePath = 'C:\Users\Documents\Sample.txt'
SET @SQL = 'bulk insert ##tblImport from ''C:\Users\Documents\Sample.txt''
WITH
(
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''|\n''
)'
EXEC(@SQL)
SELECT * FROM ##tblImport
如果我删除行末尾的竖线并尝试将代码中的行定界符更改为“\n”,我会得到同样的错误。我尝试将 SERIAL NUMBER 列的类型更改为 VARCHAR(MAX) 然后最后一列填充所有记录。然后在 \n 之前给出 space 再次给出上述错误。有人可以帮我导入数据的代码吗?
'|'分隔 fields/columns,'|\n' 分隔 records/rows。这意味着每条记录都应以“|\n”结尾以指示下一条记录的开始。
我在某处读到,在 SQL 服务器中,回车 return \r 默认使用换行符 \n(即 [CR][LF])。但这是不正确的。我的文件在每一行的末尾都有 Carriage Return 和换行符。所以我改变了行定界符如下
ROWTERMINATOR = ''|\r\n''
它确实运行良好,我的问题得到了解决。
我正在尝试导入竖线分隔的平面文件,但出现以下错误:
Msg 4832, Level 16, State 1, Line 1 Bulk load: An unexpected end of file was encountered in the data file. Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error. Msg 7330, Level 16, State 2, Line 1 Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
我的代码:
IF OBJECT_ID('tempdb..##tblImport') IS NOT NULL DROP TABLE tempdb..##tblImport;
CREATE Table ##tblImport (VoucherNumber BIGINT,Currency VARCHAR(100),VoucherAmount MONEY, RetailAmount MONEY, VoucherDuration INT, ServiceProviderGroupID INT, BatchNumber BIGINT, SerialNumber int)
DECLARE @SQL VARCHAR(2000)
DECLARE @FilePath VARCHAR(1000)
SET @FilePath = 'C:\Users\Documents\Sample.txt'
SET @SQL = 'bulk insert ##tblImport from ''C:\Users\Documents\Sample.txt''
WITH
(
FIELDTERMINATOR = ''|'',
ROWTERMINATOR = ''|\n''
)'
EXEC(@SQL)
SELECT * FROM ##tblImport
如果我删除行末尾的竖线并尝试将代码中的行定界符更改为“\n”,我会得到同样的错误。我尝试将 SERIAL NUMBER 列的类型更改为 VARCHAR(MAX) 然后最后一列填充所有记录。然后在 \n 之前给出 space 再次给出上述错误。有人可以帮我导入数据的代码吗?
'|'分隔 fields/columns,'|\n' 分隔 records/rows。这意味着每条记录都应以“|\n”结尾以指示下一条记录的开始。
我在某处读到,在 SQL 服务器中,回车 return \r 默认使用换行符 \n(即 [CR][LF])。但这是不正确的。我的文件在每一行的末尾都有 Carriage Return 和换行符。所以我改变了行定界符如下
ROWTERMINATOR = ''|\r\n''
它确实运行良好,我的问题得到了解决。