我有一个 CVS 文件,其中包含表示十六进制 int 的逗号分隔字符串值。这是一个示例 file.csv
7c8e507319bd11219373301ad75fdda8,7586a0c46c6a288f620278c727ae699b,493ab373681cac5f1ea1bf3cd69390fc
00376951c73ab83a673184af6886939f,7586a0c46c6a288f620278c727ae699b,cb3e56042f3385fd68bb682973d529c8
fe4a00d3207bcd6f68e7c9092a7e6bee,7586a0c46c6a288f620278c727ae699b,3c45806c8b3b0b25086c0492d7077d83
be0d0b358d102c10c63332d6dba84c6b,7586a0c46c6a288f620278c727ae699b,5852d834b037be87d31a87c90f3ecdf2
90476f4583fa156e99f43480d2aaeefa,7586a0c46c6a288f620278c727ae699b,5852d834b037be87d31a87c90f3ecdf2
e7cf69f2eabcc56e789378f7c2bb97c5,7586a0c46c6a288f620278c727ae699b,5852d834b037be87d31a87c90f3ecdf2
85d714a1cb30b77f7bd9fe7d08f76a39,7586a0c46c6a288f620278c727ae699b,5852d834b037be87d31a87c90f3ecdf2
e67475d8af00b28d1dc7e2019252a1ad,7586a0c46c6a288f620278c727ae699b,ab752539fe24e0f510f1f4771f214c54
8cbe258b1dd9de63aaf3fd050e86747c,7586a0c46c6a288f620278c727ae699b,3c45806c8b3b0b25086c0492d7077d83
d838591510647bbd9a02c5b6fef7d0fc,7586a0c46c6a288f620278c727ae699b,3c45806c8b3b0b25086c0492d7077d83
4e03c3c98bde65b2c1c1762681f691e1,7586a0c46c6a288f620278c727ae699b,3c45806c8b3b0b25086c0492d7077d83
9e3022eac89f3b708331db61b2804d92,7586a0c46c6a288f620278c727ae699b,3c45806c8b3b0b25086c0492d7077d83
c744553021baa07a1b7ee512a5c0fb89,7586a0c46c6a288f620278c727ae699b,3c45806c8b3b0b25086c0492d7077d83
由于文件可能很大(2 GB),我想使用 postgresql COPY
命令将它们导入到表中。这是表架构
CREATE TABLE IF NOT EXISTS "datas" (
s BYTEA,
p BYTEA,
o BYTEA, PRIMARY KEY (s,o)
)
我需要在此 COPY
查询中修复什么才能完成这项工作? ?
COPY datas FROM 'file.csv' (DELIMITER(','));
版本
我也愿意接受 MySQL
解决方案提案
最佳答案
与您的输入接近的 COPY
postgreSQL 格式具有以 \\x
开头的 bytea
列
示例:
COPY (select 'abc'::bytea) TO stdout;
将输出:
\\x616263
Conversely it would work to import that string with COPY FROM
into a bytea field.
Assuming a command line environment with awk
, the input can be transformed on the fly into this format and streamed into psql
:
awk -F, '{print "\\\\x"$1",\\\\x"$2",\\\\x"$3}' file.csv | psql -c "COPY datas FROM stdin delimiter ','"
关于mysql - 如何将十六进制格式的值从 csv 文件导入到我的 postgresql 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22637911/