在 SQL 中从 .dat 文件中读取数据

Read Data from .dat File in SQL

提问人:GenshPro 提问时间:11/16/2023 最后编辑:jarlhGenshPro 更新时间:11/16/2023 访问量:61

问:

我想在 SQL 中读取 dat.file,然后将其存储到表中,但我只能读取第一行。

这是文件的输入:


{T|110008|463|5|1|20231002|100500|0.00|0.00}
{G|19|2|2.00|Obstler 2cl}
{G|19|2|2.00|Obstler 2cl}
{G|3|1|3.20|Rindsuppe m.Griessnockerl}
{G|3|1|14.90|Backhuhn}
{G|8|2|2.80|Mineral with gas Fl 0,33}
{P|1|24.90}

这是我想插入它的表格:

CREATE TABLE #TempTable (
    Typ nvarchar(100),
    additionalfield1 nvarchar(100),
    additionalfield2 nvarchar(100),
    additionalfield3 nvarchar(100),
    additionalfield4 nvarchar(255)Null,
    additionalfield5 nvarchar(100)Null,
    additionalfield6 nvarchar(100)Null,
    additionalfield7 nvarchar(100) Null,
    additionalfield8 nvarchar(100) Null,
);

这是我读取文件的方式:

BULK INSERT #TempTable FROM 
'File...'
with (
FieldTerminator ='|',
Rowterminator='}',
Firstrow=1
);
    

但是我得到一个错误,如果我删除除第一行之外的所有行,它都可以工作,但其他行似乎不适合我的表。

sql-server 文件 读取数据

评论

1赞 jarlh 11/16/2023
您使用的是哪些 dbms?(BULK INSERT 是产品特有的功能。
0赞 GenshPro 11/16/2023
@jarlh我使用 Microsoft SQL Server
0赞 siggemannen 11/16/2023
Bulk 希望所有行的列数相同,而您的数据则不然。您可能更幸运地以其他方式阅读它,例如通过 powershell csv 功能。此外,“我收到错误”相当于 Windows 告诉您“发生了错误”——为什么不发布它,这不是秘密。
0赞 GenshPro 11/16/2023
@siggemannen感谢您的评论,但是有没有另一种方法可以通过 Microsoft SQL 读取数据并放入表格中
1赞 AlwaysLearning 11/16/2023
似乎您那里有一个有点结构化的文件,可能不应该读入单个表中。第一个字段指示它是什么类型的记录,如果将行上第三个字段的所有值相加,则从该行的第二个字段得到。你可能希望使用外部 PowerShell 或 Python 进程来分析文件,并将每条记录中的数据插入到相应的表中。试图让 SQL Server 本身读取或写入文件几乎总是错误的答案 - 它是一个关系数据库系统,而不是一个脚本环境。G24.90P

答: 暂无答案