sql >> Databasteknik >  >> RDS >> Mysql

Bästa praxis för att migrera data från MySQL till BigQuery

Jag har kört med samma problem, här är min lösning:

Exportera data från MySQL

Exportera först data från MySQL på detta sätt:

SELECT * INTO OUTFILE 'filename.csv' CHARACTER SET 'utf8' 
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '' 
FROM table <yourtable>

Detta är i verkligheten en tsv-fil (tabbavgränsade värden), men du kan importera dem som csv-tankar.

Importera till Big Query

På så sätt bör du kunna importera den till en stor fråga med följande parametrar:

bq load --field_delimiter="\t" --null_marker="\N" --quote="" \
PROJECT:DATASET.tableName gs://bucket/data.csv.gz table_schema.json

Anteckningar

  1. Om något fält i din MySQL-databas innehåller ett tabbtecken (\t ), kommer det att bryta dina kolumner. För att förhindra det kan du lägga till SQL-funktionen REPLACE(<column>, '\t', ' ') på kolumnerna och den konverterar från tabbar till blanksteg.

  2. Om du ställer in tabellschemat i big querys webbgränssnitt behöver du inte ange det varje gång du laddar en CSV.

Jag hoppas att det här fungerar för dig.



  1. Hur importerar man enkelt flera sql-filer till en MySQL-databas?

  2. Ställ in värde i beroende av rordiagrammet

  3. När behöver jag använda start-/slutblock och nyckelordet Go i SQL Server?

  4. TO_CHAR av en Oracle PL/SQL TABLE-typ