gpt4 book ai didi

sql - 使用格式文件在 SQL 中批量插入 csv 以删除双引号

转载 作者:行者123 更新时间:2023-12-01 11:48:53 41 4
gpt4 key购买 nike

我有以下格式的 CSV 文件:

data, data, "timestamp", data, data, data, data, data

我需要从时间戳数据周围删除双引号,然后将其作为 DATETIME 插入表中数据类型。

在研究了格式文件后,我想出了这个:
10.0
8
1 SQLCHAR 0 12 "," 1 Data SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 12 "," 2 Data SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 26 "","" 3 Timestamp SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 41 "," 4 Data SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 41 "," 5 Data SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 41 "," 6 Data SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 5 "," 7 Data SQL_Latin1_General_CP1_CI_AS
8 SQLCHAR 0 12 "0x0a" 6 Data SQL_Latin1_General_CP1_CI_AS

其中第 3 行 Timestamp 是带有双引号的项目。

尝试在大容量插入中使用此文件会导致出现错误消息

Msg 4823, Level 16, State 1, Line 2 Cannot bulk load. Invalid column number in the format file.



有没有办法可以改变格式文件来做我需要的?
我正在使用 MSSQL。

最佳答案

那么您的无效列号错误可能是由于在目标字段编号中重复列号 6 而不是列号 8 引起的。

但是要删除“”,您需要在第 2 列和第 3 列的分隔符中使用\” ,就像这样......

SQLCHAR 0   12  ","     1   Data        SQL_Latin1_General_CP1_CI_AS
SQLCHAR 0 12 ",\"" 2 Data SQL_Latin1_General_CP1_CI_AS
SQLCHAR 0 26 "\"," 3 Timestamp SQL_Latin1_General_CP1_CI_AS
SQLCHAR 0 41 "," 4 Data SQL_Latin1_General_CP1_CI_AS
SQLCHAR 0 41 "," 5 Data SQL_Latin1_General_CP1_CI_AS
SQLCHAR 0 41 "," 6 Data SQL_Latin1_General_CP1_CI_AS
SQLCHAR 0 5 "," 7 Data SQL_Latin1_General_CP1_CI_AS
SQLCHAR 0 12 "\r\n" 6 Data SQL_Latin1_General_CP1_CI_AS

-- note: use \r\n for row terminator for an Excel file saved as CSV

因此,对于第 2 列的分隔符实际上是 ,"并且您的第 3 列(时间戳)的分隔符是 ", - "从数据中删除,因为它是分隔符的一部分。

注: 如果 您的第一行有列标题,这将无法正常工作,即如果您的第一行包含列标题,例如...
Field1Name,Field2Name,Timestamp,Field3Name ...

那么上面的分隔符将不适用于该行,因为列标题时间戳周围没有引号。这样做的结果是,您的第一行将在第 1 列和第 2 列中包含正确的数据,但第 3 列在第一行 (",) 中没有有效的分隔符,因此它包含所有其余的列标题和前 3 个第 2 行的字段,直到它最终在第 2 行的第 3 列的末尾找到正确的分隔符 (",)。然后第 2 行的其余部分出现在后面的列中。一团糟。你不能通过使用绕过它
FIRSTROW = 2

您必须删除标题行, 在第 3 列标题周围加上引号 -
Field1Name,Field2Name,"Timestamp",Field3Name ...

完成批量插入后,通过 SQL 删除引号。

关于sql - 使用格式文件在 SQL 中批量插入 csv 以删除双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13589343/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com