2017-12-08 5 views

Antwort

1

Auf kleine Daten, wird der Export nach tsv arbeiten, aber im Großen und Ganzen wird es nicht funktionieren, weil nur der Export viel Zeit braucht.

In diesem Fall müssen Sie direkt von Stdout importieren und Clickhouse weiß, wie man es perfekt macht.

Beispielcode:

mysql -u user -ppass --compress -ss -e "SELECT * FROM table WHERE id >0 AND id <=1000000" db_name | sed 's/\"//g;s/\t/","/g;s/^/"/;s/$/"/' | clickhouse-client --query="INSERT INTO db_name.table FORMAT CSV" 

Verwendung dieser Methode, ich importieren 500 GB und 1,9 Milliarden Zeilen in 7-10 Stunden in einem clickhouse

+0

arbeitete wie ein Charme, danke! – Niyanta

+0

Gern geschehen;) –

1

Sie können Daten aus MySQL in TSV-Datei exportieren mit MySQL Kommandozeilen:

mysql -Bse "select * from TABLE_NAME" > table.tsv 

Und dann Importdaten ClickHouse:

cat table.tsv | clickhouse-client --query="INSERT INTO TABLE_NAME FORMAT TabSeparated" 
+0

Dank @mikhail, gibt es keinen direkten Ansatz zur Verfügung ein SQL in Clickhouse importieren? – Niyanta

+0

Was bedeutet "kein direkter Ansatz"? – Mikhail

+0

Mit direktem Ansatz meinte ich, ohne es zuerst in eine TSV-Datei zu konvertieren – Niyanta