+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

确定csv中的列数据类型,然后创建一个表并将该csv中的值插入该表中

发布于2021-04-12 03:17     阅读(609)     评论(0)     点赞(15)     收藏(2)


0

1

2

3

4

5

6

7

8

9

我是Python的新手,正在努力寻找问题所在的位置:

  1. 确定CSV中列的数据类型和确切长度
  2. 使用上面的代码中提取的列名,长度正确的数据类型创建表
  3. 使用正在使用的CSV将数据插入SQL Server。

有人对这种类型的问题有经验吗?以下是我一直在使用但无法确定正确的数据类型及其长度的初始代码。任何帮助将不胜感激。

import csv, ast, psycopg2

f = open('/path/to/survey/data/survey_data.csv', 'r')
reader = csv.reader(f,delimiter='|')

longest, headers, type_list = [], [], []


def dataType(val, current_type):
    try:
        # Evaluates numbers to an appropriate type, and strings an error
        t = ast.literal_eval(val)
    except ValueError:
        return 'varchar'
    except SyntaxError:
        return 'varchar'
    if type(t) in [int, datetime, float]:
       if (type(t) in [int, long]) and current_type not in ['float', 'varchar',datetime]:
           # Use smallest possible int type
           if (-32768 < t < 32767) and current_type not in ['int', 'bigint']:
               return 'smallint'
            elif (-2147483648 < t < 2147483647) and current_type not in ['bigint']:
               return 'int'
            else:
               return 'bigint'
      if type(t) is float and current_type not in ['varchar','datetime']:
           return 'decimal'
if type(t) is datetime and current_type not in ['varchar']:
    else:
        return 'varchar'

for row in reader:
    if len(headers) == 0:
        headers = row
        for col in row:
            longest.append(0)
            type_list.append('')
    else:
        for i in range(len(row)):
            # NA is the csv null value
            if type_list[i] == 'varchar' or row[i] == 'NA':
                pass
            else:
                var_type = dataType(row[i], type_list[i])
                type_list[i] = var_type
        if len(row[i]) > longest[i]:
            longest[i] = len(row[i])
f.close()

解决方案


暂无回答

0

1

2

3

4

5

6



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/934673/425502a8859dbb4055f1/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)