mysql - 如何将十六进制格式的值从 csv 文件导入到我的 postgresql 表中?

标签 mysql database postgresql csv hex

我有一个 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/

相关文章:

php - 2 总和 php

大列表的数据库设计策略

postgresql - "random",Postgres 中连续的、唯一的 BIGINT 生成

sql - 在 PostgreSQL 中为每个客户选择最后两条记录

php - 如何使用php根据数组生成查询

php - 1对1随机配对

仅当元素与 sql 相同时,Php 才回显用户信息

sql - 如何调整此查询以使用窗口函数

php - mysqli_connect ( ) 与 @mysqli_connect

java - Sqlite IN 子句在 android 中使用数组中的值不起作用?