当我使用PostgreSQL和文件(例如要将文件的内容复制到表)时,必须将文件存储在托管数据库的计算机上。有没有机会更改此?
如果我使用以下代码复制.csv文件的内容,则该路径是指托管数据库的计算机。
Using cmd = New NpgsqlCommand()
Using conn = New NpgsqlConnection("Host=" & c_dbHost & ";Username=" & c_user & ";Password=" & c_password & ";Database=" & c_DBName)
conn.Open()
Using writer = conn.BeginTextImport("COPY tbl_test(value) FROM 'C:temptest.csv' DELIMITER ',' CSV HEADER;")
End Using
End Using
End Using
我有一个临时创建.csv文件的前端。他们的内容必须存储在数据库中。
什么是常见方法?
我看到的唯一可能性是安装FTP服务器,前端将.CSV文件发送到,但是我希望该内容在数据库中随时存储在数据库中,而不会保存创建的.csv在FTP文件夹中可以从数据库服务器到达。
大多数客户端驱动程序都支持围绕COPY
协议的包装器,允许您通过客户端驱动程序COPY ... FROM STDIN
。
npgsql也不例外,请参见文档。
您似乎已经使用了conn.BeginTextImport
,因此您似乎已经一半了。我想您只是没有意识到您可以指定FROM STDIN
,然后在返回的writer
上循环以从本地CSV文件编写行。