2017-01-04 16:11 GMT+01:00 Adrian Klaver <adrian.kla...@aklaver.com>:
> On 01/04/2017 06:54 AM, Pavel Stehule wrote: > >> Hi >> >> 2017-01-04 14:00 GMT+01:00 vod vos <vod...@zoho.com >> <mailto:vod...@zoho.com>>: >> >> __ >> Now I am confused about I can create 1100 columns in a table in >> postgresql, but I can't copy 1100 values into the table. And I >> really dont want to split the csv file to pieces to avoid mistakes >> after this action. >> >> >> The PostgreSQL limit is "Maximum Columns per Table250 - 1600 depending >> on column types" - this limit is related to placing values or pointers >> to values to one page (8KB). >> >> You can hit this limit not in CREATE TABLE time, but in INSERT time. >> >> >> >> I create a table with 1100 columns with data type of varchar, and >> hope the COPY command will auto transfer the csv data that contains >> some character and date, most of which are numeric. >> >> >> Numeric is expensive type - try to use float instead, maybe double. >> > > If I am following the OP correctly the table itself has all the columns > declared as varchar. The data in the CSV file is a mix of text, date and > numeric, presumably cast to text on entry into the table. > Table column type are important - Postgres enforces necessary transformations. Regards Pavel > > >> Regards >> >> Pavel >> >> >> I use the command: COPY rius FROM "/var/www/test/test.csv" WITH >> DELIMITER ';' ; >> >> Then it shows: >> >> ERROR: row is too big: size 11808, maximum size 8160 >> >> >> >> >> >> >> >> ---- On 星期二, 03 一月 2017 05:24:18 -0800 *John McKown >> <john.archie.mck...@gmail.com >> <mailto:john.archie.mck...@gmail.com>>* wrote ---- >> >> On Mon, Jan 2, 2017 at 2:57 PM, Rob Sargent >> <robjsarg...@gmail.com <mailto:robjsarg...@gmail.com>>wrote: >> >> >> Perhaps this is your opportunity to correct someone else's >> mistake. You need to show the table definition to convince >> us that it cannot be improved. That it may be hard work >> really doesn't mean it's not the right path. >> >> >> This may not be possible. The data might be coming in from an >> external source. I imagine you've run into the old "well, _we_ >> don't have any problems, so it must be on your end!" scenario. >> >> Example: we receive CSV files from an external source. These >> files are _supposed_ to be validated. But we have often received >> files where NOT NULL fields have "nothing" in them them. E.g. a >> customer bill which has _everything_ in it _except_ the customer >> number (or an invalid one such as "123{"); or missing some other >> vital piece of information. >> >> In this particular case, the OP might want to do what we did in >> a similar case. We had way too many columns in a table. The >> performance was horrible. We did an analysis and, as usual, the >> majority of the selects were for a subset of the columns, about >> 15% of the total. We "split" the table into the "high use" >> columns table & the "low use" columns table. We then used >> triggers to make sure that if we added a new / deleted an old >> row from one table, the corresponding row in the other was >> created / deleted. >> >> >> >> >> >> -- >> Sent via pgsql-general mailing list >> (pgsql-general@postgresql.org >> <mailto:pgsql-general@postgresql.org>) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgsql-general >> <http://www.postgresql.org/mailpref/pgsql-general> >> >> >> >> >> -- >> There’s no obfuscated Perl contest because it’s pointless. >> >> —Jeff Polk >> >> Maranatha! <>< >> John McKown >> >> >> >> > > -- > Adrian Klaver > adrian.kla...@aklaver.com >