使用 NPGSQL 将 csv 文件的内容写入 PostgreSQL 失败
Writing the content of a csv file to PostgreSQL with NPGSQL fails
我正在将 csv 文件的内容写入 PostgreSQL table 借助版本 3.2.5 中的 NPGSQL。
我的csv内容如下
id, value
1, 89
2, 286
3, 80
4, 107
我用下面的命令写
Using writer = conn.BeginTextImport("COPY tbl_test (id,value) FROM 'C:/temp/test.csv' DELIMITER ',' CSV HEADER")
当我 运行 我的代码时,值被写入我的数据库,但命令抛出以下错误消息:
Received unexpected backend message CompletedResponse. Please file a bug.
当我直接在SQLShell中运行命令时一切正常,所以问题似乎是由NPGSQL产生的。
这是我在 SQL Shell:
中使用的命令
\COPY tbl_test(id,value) FROM 'C:/temp/test.csv' DELIMITER ',' CSV HEADER;
有其他人遇到过此消息吗?
正如 github issue 中的回答,您使用 API 不正确。
如果您的 CSV 文件位于客户端(Npgsql 应用程序位于 运行),那么您应该使用 COPY tbl_test(value) FROM STDIN
,而不是 FROM c:\temp\test.csv
。后者在 csv 文件位于 PostgreSQL 服务器上时使用。 See the documentation.
如果您只想导入服务器上的文件,只需像常规一样执行 COPY 命令 SQL - 创建一个命令并使用 ExecuteNonQuery 执行它。不要使用 BeginTextImport API.
我正在将 csv 文件的内容写入 PostgreSQL table 借助版本 3.2.5 中的 NPGSQL。
我的csv内容如下
id, value
1, 89
2, 286
3, 80
4, 107
我用下面的命令写
Using writer = conn.BeginTextImport("COPY tbl_test (id,value) FROM 'C:/temp/test.csv' DELIMITER ',' CSV HEADER")
当我 运行 我的代码时,值被写入我的数据库,但命令抛出以下错误消息:
Received unexpected backend message CompletedResponse. Please file a bug.
当我直接在SQLShell中运行命令时一切正常,所以问题似乎是由NPGSQL产生的。
这是我在 SQL Shell:
中使用的命令\COPY tbl_test(id,value) FROM 'C:/temp/test.csv' DELIMITER ',' CSV HEADER;
有其他人遇到过此消息吗?
正如 github issue 中的回答,您使用 API 不正确。
如果您的 CSV 文件位于客户端(Npgsql 应用程序位于 运行),那么您应该使用 COPY tbl_test(value) FROM STDIN
,而不是 FROM c:\temp\test.csv
。后者在 csv 文件位于 PostgreSQL 服务器上时使用。 See the documentation.
如果您只想导入服务器上的文件,只需像常规一样执行 COPY 命令 SQL - 创建一个命令并使用 ExecuteNonQuery 执行它。不要使用 BeginTextImport API.