我正在制作一个程序,它可以用Visual在PosgresSQL中连接到VisualBasicScript中的数据库。我希望能够像在PSQL控制台上那样导入.csv文件,但由于某些原因,我无法导入。我一直在查看各种网站和文档,但在互联网上如何使用BeginTextImport并没有具体的方法。所有的例子都在C#中。文档太含蓄了,我可以理解什么是真正的参数。这就是我的代码:
Dim cnn As String
cnn = "Server=localhost;Port=5432;Userid=postgres;Database=basedatos;password=123456"
Dim pgCn As NpgsqlConnection = New NpgsqlConnection(cnn)
pgCn.Open()
pgCn.BeginTextImport("\copy datos.muestreo from 'C:\Users\crist\Desktop\ARCHIVOS FASA\INSERTS\inventarios.csv'" & vbCrLf & "with delimiter ',' CSV header quote E'\''")但当我运行它时,我得到了这个:
System.ArgumentException:“必须包含来自STDIN命令的副本! 参数名称: copyFromCommand
发布于 2018-02-01 00:53:15
正如上面的@sami注释一样,\copy是一个psql命令,不能在Npgsql (或任何其他数据库驱动程序)中使用。
正如PostgreSQL文档所述,如果您想从PostgreSQL服务器上可用的文件中导入数据,您可以在尝试时使用COPY table_name FROM filename,但只需使用ExecuteNonQuery即可执行。
当您希望从客户端计算机复制数据时,即Npgsql正在运行的位置,BeginTextImport()将被保留。在这种情况下,您必须使用COPY table_name FROM STDIN。有关更多信息,请咨询Npgsql文档。
发布于 2018-02-02 01:42:52
我已经搞清楚了,我不知道如何将输入值放在代码中,但是我找到了用using writer for file和write for each line in file解决方案
https://stackoverflow.com/questions/48467377
复制相似问题