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

79

我刚刚了解到MySQL有一个本地的CSV存储引擎,它会将每个表的数据存储在逗号分隔值文件中。

是否可以直接从上传的CSV文件中创建表格,类似于以下内容:

CREATE TABLE USERS < PATH/USERS.CSV

用户上传的 users.csv 文件存储在哪里?


这并不是一个确切的答案,但你可能指的是LOAD DATA INFILE http://dev.mysql.com/doc/refman/5.1/en/load-data.html,其文本文件类似于CSV结构化文件。 - georgepsarakis
2
你可以使用该工具(https://csv-schema.surge.sh/)将CSV转换为CREATE TABLE(带有架构)。它会尝试猜测字段类型(相当不错)。 - s1x
我发现 PostgreSQL 可以使用 file_fdw 直接查询 CSV 文件。 https://www.postgresql.org/docs/9.5/file-fdw.html - Jonathan DS
14个回答

1
如果您愿意使用Python,Pandas对我来说非常好用(csvsql在我的情况下永远无法运行)。类似于:
from sqlalchemy import create_engine
import pandas as pd

df = pd.read_csv('/PATH/TO/FILE.csv')
# Optional, set your indexes to get Primary Keys
df = df.set_index(['COL A', 'COL B'])

engine = create_engine('mysql://user:pass@host/db', echo=False)

df.to_sql(table_name, dwh_engine, index=False)

此外,这并没有解决“使用CSV引擎”的部分,这是问题的一部分,但也可能有用。

1
我做了一个Windows命令行工具,可以完成这个任务。
你可以在这里下载它:http://commandline.dk/csv2ddl.htm 使用方法:
C:\Temp>csv2ddl.exe mysql test.csv test.sql

或者

C:\Temp>csv2ddl.exe mysql advanced doublequote comma test.csv test.sql

1
现在,对于我们这些可怜的Windows用户来说,这看起来很酷。不幸的是,链接已经失效了 ;( - Verakso

1

MySQL for excel插件可以帮助您。

http://dev.mysql.com/doc/refman/5.6/en/mysql-for-excel.html

在Excel中打开您的CSV文件。您可以使用此插件将Excel数据导出到远程或本地MySQL服务器的新表中。 它将分析您的数据(前100到1000行)并创建相应的表模式。


哇,这个工具非常棒。我需要创建一个有99个字段和1100行的表格。这个工具可以进行基本数据验证,为我创建表格和所有字段。做得非常好。我能够远程连接到 GoDaddy 的 MySQL 表格。注意:此工具仅适用于 Windows 操作系统。 - zipzit
链接已损坏。 - the Tin Man

1

这是不可能的,但您可以覆盖现有的表文件。但请确保您文件中的行结束符是Unix风格(仅以\n结尾),而不是Windows风格(以\r\n结尾),无论您是否在Windows下工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接