SQL 服务器:Select 数据来自带有 OPENROWSET 和 BULK 的制表符分隔文件 returns 空结果
SQL Server: Select data from tab delimited file with OPENROWSET and BULK returns empty result
我想使用 SQL 服务器和 OPENROWSET
从制表符分隔的文件中查询数据。
我有以下示例源文件:
FirstName LastName EMail
Marny Haney sed.dictum.eleifend@sem.com
Alexa Carpenter Vivamus.non.lorem@consectetuereuismod.com
Wyatt Mosley est@tortoratrisus.org
Cedric Johns lectus.a.sollicitudin@quisurna.ca
Lavinia Fischer nibh@insodales.net
Vera Marshall scelerisque@sapienAeneanmassa.co.uk
Beau Frost vel.quam.dignissim@mauris.net
Halla Fisher amet.metus.Aliquam@ullamcorpervelit.co.uk
Sierra Randall Nulla@magnis.net
Noel Malone semper@porttitor.org
我正在使用以下格式文件:
12.0
3
1 SQLCHAR 0 5 "" 1 FirstName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 5 "" 2 LastName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 27 "0x0A" 3 EMail SQL_Latin1_General_CP1_CI_AS
我正在尝试使用以下语句从文件中查询数据:
SELECT *
FROM
OPENROWSET(
BULK 'C:\data\Source\sample_data.dwo'
,FORMATFILE= 'C:\data\Format\sample_data.FMT'
,FIRSTROW = 2
) AS a
不幸的是,查询returns一个空的结果。我没有收到错误。
据我了解,字段的默认终止符是 \t
。我也尝试使用 t
和 \t
明确地作为终止符,但仍然没有结果。
有什么建议我接下来可以尝试吗?
Link 到两个文件:
https://github.com/LordTakeshiXVII/files/blob/master/sample_data.FMT
https://github.com/LordTakeshiXVII/files/blob/master/sample_data.dwo
您需要调整格式文件:
- 首先将字段的最大长度更改为适当的值(示例中为 100)- 您也可以将其设置为零以获得无限输入长度。
- 其次将前两个字段的终止符设置为
\t
,将第三个字段的终止符设置为 \r\n
12.0
3
1 SQLCHAR 0 100 "\t" 1 FirstName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "\t" 2 LastName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "\r\n" 3 EMail SQL_Latin1_General_CP1_CI_AS
您可以在此处找到有关格式文件的更多信息:https://docs.microsoft.com/en-us/sql/relational-databases/import-export/create-a-format-file-sql-server?view=sql-server-2017
我想使用 SQL 服务器和 OPENROWSET
从制表符分隔的文件中查询数据。
我有以下示例源文件:
FirstName LastName EMail
Marny Haney sed.dictum.eleifend@sem.com
Alexa Carpenter Vivamus.non.lorem@consectetuereuismod.com
Wyatt Mosley est@tortoratrisus.org
Cedric Johns lectus.a.sollicitudin@quisurna.ca
Lavinia Fischer nibh@insodales.net
Vera Marshall scelerisque@sapienAeneanmassa.co.uk
Beau Frost vel.quam.dignissim@mauris.net
Halla Fisher amet.metus.Aliquam@ullamcorpervelit.co.uk
Sierra Randall Nulla@magnis.net
Noel Malone semper@porttitor.org
我正在使用以下格式文件:
12.0
3
1 SQLCHAR 0 5 "" 1 FirstName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 5 "" 2 LastName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 27 "0x0A" 3 EMail SQL_Latin1_General_CP1_CI_AS
我正在尝试使用以下语句从文件中查询数据:
SELECT *
FROM
OPENROWSET(
BULK 'C:\data\Source\sample_data.dwo'
,FORMATFILE= 'C:\data\Format\sample_data.FMT'
,FIRSTROW = 2
) AS a
不幸的是,查询returns一个空的结果。我没有收到错误。
据我了解,字段的默认终止符是 \t
。我也尝试使用 t
和 \t
明确地作为终止符,但仍然没有结果。
有什么建议我接下来可以尝试吗?
Link 到两个文件:
https://github.com/LordTakeshiXVII/files/blob/master/sample_data.FMT
https://github.com/LordTakeshiXVII/files/blob/master/sample_data.dwo
您需要调整格式文件:
- 首先将字段的最大长度更改为适当的值(示例中为 100)- 您也可以将其设置为零以获得无限输入长度。
- 其次将前两个字段的终止符设置为
\t
,将第三个字段的终止符设置为\r\n
12.0
3
1 SQLCHAR 0 100 "\t" 1 FirstName SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 100 "\t" 2 LastName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "\r\n" 3 EMail SQL_Latin1_General_CP1_CI_AS
您可以在此处找到有关格式文件的更多信息:https://docs.microsoft.com/en-us/sql/relational-databases/import-export/create-a-format-file-sql-server?view=sql-server-2017