【问题标题】:How do I import a CSV file into CockroachDB?如何将 CSV 文件导入 CockroachDB?
【发布时间】:2017-09-05 23:44:43
【问题描述】:

我有一个从 MySQL 数据库导出的 CSV 文件,我想将其移至 CockroachDB。如何从命令行读取数据?

【问题讨论】:

    标签: cockroachdb


    【解决方案1】:

    Cockroach 不支持 DELIMITER 语句,它也不接受 CSV 显式格式,因此使用 COPY FROM 的正确命令是:

    psql postgres://user@host:port/DATABASE -c "COPY [table] FROM '[path to].csv';"

    分隔符必须是特殊字符\t,因此如果您的CSV文件使用,作为分隔符,您可以使用sed轻松转换:

    sed -i 's/,/\t/g' [your file].csv

    我不知道为什么他们将特殊字符 \t 硬编码为分隔符而不是 ,

    https://github.com/cockroachdb/cockroach/issues/16407 中已经有一个未解决的问题

    【讨论】:

      【解决方案2】:

      CockroachDB v2.0 或更高版本

      CockroachDB 2.0 及更高版本使用IMPORT 语句原生支持CSV 导入。您可以使用WITH delimiter 选项指定自定义分隔符,如these examplesthis migration guide 所示。

      例如:

      IMPORT TABLE customers
          CREATE USING 'azure://acme-co/customer-create-table.sql'
          CSV DATA ('azure://acme-co/customer-import-data.csv')
      

      在 v2.1 中,您还可以使用 IMPORT MYSQLDUMPIMPORT PGDUMP 直接从 MySQL 或 PostgreSQL 文件导入。有关详细信息,请参阅文档的 this section 以及 MySQL/Postgres 迁移指南。

      CockroachDB v1.1 或更早版本

      将 CSV 文件导入 CockroachDB 的最简单方法是使用 CSV 到 SQL 转换器,将 CSV 中的每一行转换为 SQL INSERT 语句。您可以找到任意数量的网站来为您执行此操作,或者您可以构建一个脚本以使用 awk、Perl 或 Python 等方式进行处理。将 SQL INSERT 语句放入文件后,您可以像这样执行它们:

      cockroach sql --database=[your db] < [file].sql
      

      或者,如果您安装了 Postgres,您可以通过 psql 连接到 CockroachDB 并使用其 COPY 命令导入 CSV。

      psql postgres://USER@HOST:PORT/DATABASE -c "COPY [table] FROM '[path to].csv' DELIMITER ',' CSV;"
      

      如果您在本地机器的默认端口上运行 CockroachDB,下面是相同的命令,并填写了默认值:

      psql postgres://root@localhost:26257/DATABASE -c "COPY [table] FROM '[path to].csv' DELIMITER ',' CSV;"
      

      【讨论】:

      • postgres 复制命令加载到 cockroach 对我不起作用。文档中也没有提到这种方法,所以我假设它并没有得到真正的支持。不过支持 pgdump 恢复。
      • 这在 2.1 中不起作用,因为 CockroachDB 在语法中不支持DELIMITER,因此不能接受带有逗号分隔符的 CSV 文件。
      • @RKKuppala @ManiGandham 您必须使用 psql(即 Postgres CLI),而不是 cockroach sql,才能使用 COPY 命令。
      【解决方案3】:

      以上说明现已过时; CockroachDB 2.0 及更高版本使用IMPORT 语句原生支持CSV 导入。您可以使用WITH delimiter 选项指定自定义分隔符,如these examplesthis migration guide 所示。

      如果您使用 CockroachDB 2.1 并从 MySQL 或 Postgres 迁移,您还可以使用 IMPORT MYSQLDUMPIMPORT PGDUMP 从 mysqldump 或 pg_dump SQL 文件直接导入。有关详细信息,请参阅文档的 this section 以及 MySQL/Postgres 迁移指南。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-07
        • 2011-03-24
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        • 2011-04-07
        • 2012-06-20
        相关资源
        最近更新 更多