当前位置: 首页 > 知识库问答 >
问题:

导入CSV到Postgreql

乐正明辉
2023-03-14

我正在开发一个基于Django的web应用程序。

我将把一个csv导入postgresql数据库,该数据库有100000多行,并将其用作Django应用程序的数据库。在这里,我面临两个问题。字段名包括以下特殊字符:

%oil, %gas, up/down, CAPEX/Cash-flow, D&C Cape,...

首先,如何定义Postgresql数据库的字段名以导入csv?

导入后,我将通过django模型获取数据。那么如何定义包含特殊字符的Django模型变量名呢?

当然,如果我更改包含特殊字符的csv的列名也是可能的,但我不想更改它。我想导入原始csv而不做任何更改。

有没有解决这个问题的办法?

共有1个答案

百里沛
2023-03-14

您的示例中没有特殊字符。从python或数据库的角度来看,至少没有任何问题。

首先,避免使用可疑的字段名,尤其是在金融领域<代码>%oil可以表示石油份额、石油利润率或其他。使用有意义的名称定义模型,如

class FinancialPeformanceData(models.Model):

     oil_share = models.DecimalField(max_digits=5, decimal_places=2)
     gas_share = models.DecimalField(max_digits=5, decimal_places=2)
     growth = models.DecimalField(max_digits=10, decimal_places=2)
     capex_to_cf = models.DecimalField(max_digits=7, decimal_places=2)
     ... etc.

然后按照@Hambone的建议,使用copy从CSV导入数据。CSV文件中不需要标题。

def import_csv(request):

    file = './path/to/file'
    with open(file, 'rb') as csvfile:
          with closing(connections['database_name_from_settings'].cursor()) as cursor:
                cursor.copy_from(
                    file=csvfile,
                    table='yourapp_financialperformancedata', #<-- table name from db
                    sep='|',  #<-- delimiter
                    columns=(
                        'oil_share',
                        'gas_share',
                        'growth',
                        'capex_to_cf',
                        ... etc.
                    ),
            )

    return HttpResponse('Done!')
 类似资料:
  • 问题内容: 我创建了一个数据库和一个表。我还创建了所有需要的字段。我创建了46个字段,其中一个是该行的ID。CSV不包含ID字段,也不包含列的标题。我对所有这些都是陌生的,但一直在努力解决。我不是在这里懒惰地寻求答案,而是在寻找方向。 我试图弄清楚如何导入CSV,但是让它开始从第二个字段开始导入数据,因为我希望auto_increment将填充ID字段,这是我创建的第一个字段。 我没有运气就尝试了

  • 我有一个csv文件,我想将它导入JTable。 是否有一个简单的示例显示如何将csv文件导入JTable?

  • 我正在以模式运行Spark集群。Master和Worker节点都可以访问,并在Spark WebUI中具有日志。 我正在尝试将数据加载到PySpark会话中,以便我可以在Spark DataFrames上工作。 下面是几个例子(其中一个来自官方文件),我尝试使用不同的方法,但都失败了,出现了相同的错误。如 每次我都会遇到同样的错误: Py4JJavaError:调用o81时出错。csv: org.

  • 问题内容: 我刚刚切换到Webmatrix,因为我正在使用的服务器停止了对MySQL / PHP的支持。现在,我正在使用SQL Server Compact将旧的php mysql网站转换为Webmatrix。但是我遇到了一点障碍。我正在使用脚本将csv文件直接导入到数据库中,在php / mysql中这并不难,但是我无法使其在Webmatrix和SQL Server Compact中工作。有人对

  • 问题内容: 我正在尝试使用pgAdmin4导入CSV。我使用查询创建了表格, CSV读取的标题和第一行是… 当我尝试使用导入对话框时,该过程失败,并显示错误代码1: 我觉得没什么错-有什么想法吗? 问题答案: 根据你的表结构,这种进口将在列失败和,因为它们的值有小数,您宣布他们作为。删除小数点或将列类型更改为例如。 话虽如此,只需从pgAdmin尝试一下(考虑到文件和数据库位于同一服务器中): 如

  • 问题内容: 我正在做“elasticsearch入门”教程。不幸的是,本教程没有介绍将数据库导入Elasticsearch的第一步。 我用谷歌搜索找到了解决方案,但不幸的是它无法正常工作。这是我要实现的目标和拥有的目标: 我有一个要导入的数据文件(简化了) 我想使用导入。经过互联网研究后,我得到以下配置: 我在指定文档类型时遇到了麻烦,因此一旦导入数据,便导航到http:// localhost: