我摆了一张这样的桌子。
CREATE TABLE IF NOT EXISTS details (
CountyCode CHAR(3) NOT NULL,
VoterID CHAR(10) NOT NULL UNIQUE,
NameLast TEXT,
NameSuffix TEXT,
NameFirst TEXT,
NameMiddle TEXT,
PublicRecordExemption CHAR(1),
ResidenceAddressLine1 TEXT,
ResidenceAddressLine2 TEXT,
ResidenceCity TEXT,
ResidenceState TEXT,
ResidenceZipcode TEXT,
MailingAddressLine1 TEXT,
MailingAddressLine2 TEXT,
MailingAddressLine3 TEXT,
MailingCity TEXT,
MailingState CHAR(2),
MailingZipcode TEXT,
MailingCountry TEXT,
Gender CHAR(1),
Race CHAR(1),
BirthDate CHAR(10),
RegistrationDate CHAR(10),
PartyAffiliation CHAR(3),
Precinct CHAR(6),
PrecinctGroup CHAR(3),
PrecinctSplit CHAR(6),
PrecinctSuffix CHAR(3),
VoterStatus CHAR(3),
CongressionalDistrict CHAR(3),
HouseDistrict CHAR(3),
SenateDistrict CHAR(3),
CountyCommissionDistrict CHAR(3),
SchoolBoardDistrict CHAR(2),
DaytimeAreaCode CHAR(3),
DaytimePhoneNumber CHAR(7),
DaytimePhoneExtension CHAR(4),
Emailaddress TEXT
);我运行此命令从制表符分隔的文件Detail.txt导入数据。
\copy details FROM Detail.txt;
几秒钟后,命令行控制台将显示此错误。
ERROR: value too long for type character(2) CONTEXT: COPY details, line 449121, column mailingstate: "273707216"。
Here's line 449121 copied into a pastebin。
该错误指示PSQL试图将值273707216读入mailingstate列,该列的长度为两个字符。我认为PSQL会将NC读入该列。
为什么PSQL会读错这一行?
发布于 2017-09-04 11:15:18
我认为问题出在该行的这些字段中。
Hand Dr \ Melbourne该数据中的反斜杠后面紧跟一个制表符。对于复制函数来说,它看起来像一个\t,双反斜杠可能被视为转义字符,而不是字段分隔符,因此它将“吃掉”一列,从而将mailingZipcode放入mailingState列。
尝试删除该反斜杠,然后尝试重新导入该行。
https://stackoverflow.com/questions/46020850
复制相似问题