我是 pgAdmin 和 Azure 数据库的新手。我有一个包含大约 220 列的巨大 csv 文件,我想在 pgAdmin4 中创建一个表以将其推送到 Azure。
但是我不知道如何自动检测列的类型。
这是一个例子:
IDI GKID S01Q01 S02Q01_Gender ...
100093 enq030059569748fc89091fdd91cc337cac44eca90 Yes, I agree Female ...
我正在编写脚本来创建表格。但是,考虑到列的数量,我想自动化它以获取允许我将 csv 添加到 Microsoft Azure 的 pgAdmin4 中的数据库的脚本。
然后,在转置 csv 标头后,我得到:
IDI
GKID
S01Q01
S02Q01_Gender
...
我正在编写脚本来创建表格。但是,考虑到列的数量,在最好的情况下,我希望自动检测列的类型以便能够将其写入正确的部分,在最坏的情况下,放置 TEXT 类型的泛型类型。
到目前为止,我已经尝试过
output = ""
file_name = "columns.txt"
string_to_add = " TINYTEXT,"
with open(file_name, 'r') as f:
file_lines = [''.join([x.strip(), string_to_add, '\n']) for x in f.readlines()]
with open(file_name, 'w') as f:
f.writelines(file_lines)
它给了我:
IDI TINYTEXT,
GKID TINYTEXT,
S01Q01 TINYTEXT,
S02Q01_Gender TINYTEXT,
...
然后,我可以这样做:
CREATE TABLE my_table (
IDI TINYTEXT,
GKID TINYTEXT,
S01Q01 TINYTEXT,
S02Q01_Gender TINYTEXT,
...
但我不确定这是否足以使表格能够接收我的 csv 文件。
有一些命令行工具可以进行字段类型推断。
一个是 xsv https://github.com/BurntSushi/xsv/
在此运行此命令(https://gist.githubusercontent.com/aborruso/3b1af402f0d2ed49465f218d19be81d9/raw/c0e95b320924e9e49902633d16e7ab253046ca16/input.csv)
你有
使用 csvkit ( https://csvkit.readthedocs.io/en/latest/index.html ) 并运行
你将会有
在 csvkit 你也有
这给了你
csv 来自哪里?- 我猜是其他数据库 - 你不能使用用于其他数据库的创建表语句吗?
除此之外,虽然第二个数据集会有所帮助 -
其他列看起来像字符串数据,所以 tinytext 似乎没有错...
我知道 x 表中的大约 220 列需要手动完成很多工作 - 但我真的建议投入时间并设置适当的数据类型(尤其是日期时间列 - 以及最有可能用于外键关系的列(整数对于影响连接请求速度的大小)