如何从 CSV 创建表?

Posted

技术标签:

【中文标题】如何从 CSV 创建表?【英文标题】:How to create a table from a CSV? 【发布时间】:2016-07-25 20:23:31 【问题描述】:

SnappyData v.0.5

我想做一些类似于在 QuickStart 加载脚本中找到的加载 parquet 文件的操作。

使用镶木地板选项创建表 STAGING_AIRLINEREF(路径 '../../quickstart/data/airportcodeParquetData');

但是,我有 CSV 文件而不是 parquet 文件。我在任何 RowStore 文档中都没有看到“使用镶木地板”或 CSV 版本,所以我猜测了一下,但失败了。

CREATE TABLE STAGING_ROADS 使用 csv 选项(路径 'roads.csv');

如何直接从 CSV 文件创建表,其中标题行是列名,其余作为数据行加载?

编辑

好的。按照 Spark-CSV 语法,我加载此文件并获取零行或表。

"roadId","name"
"1","Road 1"
"2","Road 2"
"3","Road 3"
"4","Road 4"
"5","Road 5"
"6","Road 6"
"7","Road 7"
"8","Road 8"
"9","Road 9"
"10","Road 10"


snappy> run '/home/ubuntu/data/example/load_roads.sql';
snappy> SET SCHEMA A;
0 rows inserted/updated/deleted
snappy> DROP TABLE IF EXISTS STAGING_ROADS;
0 rows inserted/updated/deleted
snappy> CREATE TABLE STAGING_ROADS
(road_id string, name string)
USING com.databricks.spark.csv
OPTIONS(path '/home/ubuntu/data/example/roads.csv', header 'true');
0 rows inserted/updated/deleted

【问题讨论】:

【参考方案1】:

您可以使用以下方式:

CREATE TABLE STAGING_ROADS USING com.databricks.spark.csv OPTIONS(path 'roads.csv', header "true");

【讨论】:

我试过这个并添加了上面的编辑。它至少会运行,但不会创建表,也不会在我的 10 行 CSV 文件中加载任何行。 好的。我站得更正了。查看回复“插入/更新/删除 0 行”是错误的。 snappy-shell 的输出具有欺骗性,因为当我从 staging_roads 实际执行 select * 时,我得到了十行。看来我被回复信息蒙蔽了!【参考方案2】:

是的,不幸的是,shell 显示从 JDBC 返回的集合,并且可能会误导 DDL 命令。请注意,即使对于“SET SCHEMA”,它也是如此。 添加了一个新的 JIRA 来跟踪这个问题 - https://jira.snappydata.io/browse/SNAP-940。

【讨论】:

以上是关于如何从 CSV 创建表?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 从 csv 文件创建星型模式

如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?

使用 CSV 存储引擎直接从 CSV 文件创建 mysql 表?

从带有标题的 CSV 文件创建表

如何使用 CSV 文件中的标题从 CSV 文件复制到 PostgreSQL 表?

如何从任何数据库表创建 PySpark RDD?