我想将数据导入到postgresql表中。 我有.csv文件格式如下:
1; John Blake
2; Roberto Young
3;Mark Palmer
如何剥离存在的第一个空格的任何解决方案?
我使用了以下代码
\copy users from 'users.csv' using delimiters E';'
它确实保留了空白
答案 0 :(得分:1)
你无法单独使用COPY来做到这一点。
您可以使用与trim结合的更新:
UPDATE table SET column = trim(from column)
或者在将数据批量插入数据库之前使用脚本清理数据。
答案 1 :(得分:1)
COPY
到临时的临时表,INSERT
从那里进入目标表,修剪文本列。
CREATE TEMP TABLE tmp_x AS
SELECT * FROM users LIMIT 0; -- empty temp table with structure of target
\copy tmp_x FROM '/absolute/path/to/file' delimiters E';'; -- psql command (!)
INSERT INTO users
(usr_id, usr, ...) -- list columns
SELECT usr_id, ltrim(usr), ...
FROM tmp_x;
DROP TABLE tmp_x; -- optional; is destroyed at end of session automatically
ltrim()
仅修剪字符串左侧的空格。
这一系列操作比在COPY
之后更新表中的行更好,这需要更长的时间并产生死行。此外,只有这样处理新导入的行。
相关答案:
Delete rows of a table specified in a text file in Postgres