Importing a CSV file into a table with a different number of columns without a bridge / temp table

StackOverflow https://stackoverflow.com/questions/22125983

  •  18-10-2022
  •  | 
  •  

Question

Say I have a CSV file with 3 columns and a destination table with 5 columns (3 identical to the CSV columns, and 2 more). All rows have data for the same number of columns.

CSV:

id | name      | rating 
---|-----------|-------
1  | radiohead | 10
2  | bjork     | 9
3  | aqua      | 2

SQL table:

id | name      | rating | biggest_fan | next_concert

Right now, in order to import the CSV file, I create a temporary table with 3 columns, then copy the imported data into the real table. But this seems silly, and I can't seem to find any more efficient solution.

Isn't there a way to import the file directly into the destination table, while generating NULL / default values in the columns that appear in the table but not in the file?

I'm looking for a SQL / phpMyAdmin solution

Was it helpful?

Solution

No, I don't think there's a better way. A different way would be to use a text manipulating program (sed, awk, perl, python,...) to add two commas to the end of each line; even if your column order didn't match, phpMyAdmin has a field for changing the order when importing a CSV. However, it seems to still require the proper number of columns. Whether that's more or less work than what you're already doing is up to you, though.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top