【发布时间】:2015-04-10 08:01:34
【问题描述】:
我面临在 monetdb 表中批量导入的文件加载问题。下面提供了重新创建问题的详细信息:
我已经安装了 monetdb 版本 11.19.9,monetdb 的 python 客户端也是 11.19.9。
创建了 dbform,它工作正常,我已经连接到 monetdb shell 并通过 python api。
现在正在尝试导入转储的 CSV 文件,csv 文件的内容如下所示:
44444444|ALI
55555555|JAFFRI
表格架构定义为:*“表格已经有5000万行,而csv只有两行”
CREATE TABLE "voc"."test" (
"id" INTEGER,
"data" VARCHAR(30)
);
- 用户名和数据库名都是“voc”
用于导入文件的命令如下。
root@monetdb:~# mclient -u voc -d voc -s "COPY INTO test FROM STDIN" - < test.csv
password:
NULL byte in input
root@monetdb:~# mclient -u voc -d voc -s "COPY INTO test FROM STDIN NULL AS ''" - < test.csv
password:
NULL byte in input
抛出错误“输入中的NULL字节”并且没有任何内容添加到表中。
对于 Python,我尝试过使用以下命令:
import monetdb.sql
connection = monetdb.sql.connect(username="voc", password="voc", hostname="localhost", database="voc")
cursor = connection.cursor()
cursor.execute("COPY INTO test FROM 'test.csv'")
connection.commit()
此代码抛出 Perm 异常:
COPY INTO: insufficient privileges: COPY INTO from file(s) requires database administrator rights, use 'COPY INTO "test" FROM STDIN' instead
现在我没有找到任何 Python 代码与 STDIN 一起使用的示例,Monetdb 游标不提供 copy_from,这与您可以单独传递文件的 PostgreSQL 不同。 python有什么解决办法吗?
操作系统?
uname -a
Linux monetdb 3.13.0-43-generic #72-Ubuntu SMP Mon Dec 8 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
*** Python 示例在用户 monetdb 上运行良好,但对于终端“输入中的 NULL 字节”仍然存在。
【问题讨论】:
-
您能分享您要导入的文件吗?
-
我已经分享了相关文件的内容。我还需要共享实际文件吗?
标签: python csv bigdata monetdb bulk-load