我有PostgreSQL的如下表:批量數據導入陣列使用領域Npgsql的
+------------+----------+
| Column | Type |
+------------+----------+
| name | text |
| keywords | text[] |
+------------+----------+
我想插入一大堆行的,但我無法弄清楚如何插入數據放入數組字段中。使用BeginTextImport
自TextWriter的不接受陣列不起作用:
using (var writer = connection.BeginTextImport(
"COPY table (name, keywords) FROM STDIN DELIMITER ';'"
))
{
foreach (var item in items)
{
writer.Write(item.Name + ";");
// How to do this?
writer.Write(item.Keywords.ToArray(), NpgsqlDbType.Array | NpgsqlDbType.Text);
}
}
使用BeginBinaryImport
給出了一個錯誤:「不能關閉的作家,一排仍在進行中,結束它Npgsql的第一」。
using (var writer = connection.BeginBinaryImport(
"COPY table (name, keywords) FROM STDIN (FORMAT BINARY)"
))
{
foreach (var item in items)
{
writer.StartRow();
writer.Write(item.Name, NpgsqlDbType.Text);
writer.Write(item.Keywords.ToArray(), NpgsqlDbType.Array | NpgsqlDbType.Text);
}
}// Exception thrown here
如何將數據批量複製到數組字段中?
文本導入不適合這種情況 - 這意味着您要負責格式化PostgreSQL文本格式的所有內容(分隔符和全部)。 –
我剛剛試過了你的二進制代碼示例,它工作得很好 - 你使用的是什麼版本的Npgsql?你的物品清單究竟是什麼類型?你能否提交重現此問題的完整源代碼? –