从csv动态创建表格

16 浏览
0 Comments

从csv动态创建表格

我面临这样一种情况:我们从不同的客户处获取大量的CSV文件,但目标表始终期望的列数和列长度总是存在问题。

如何处理经常变化的CSV文件是最佳方式?我的目标是将这些CSV文件加载到Postgres数据库中。

我查看了Postgres中的\COPY命令,但它没有一个选项可以创建表。

0
0 Comments

动态从CSV文件创建表的问题是由于数据加载时需要处理不同类型的数据而引起的。当需要处理不同类型的数据时,建议使用外部ETL工具,如CloverETL、Talend Studio或Pentaho Kettle进行数据加载。

\copy实际上是用于导入已知结构中的格式良好的数据。

解决这个问题的方法是使用外部ETL工具,这些工具可以处理不同类型的数据,并将其加载到数据库中。与\copy相比,这些工具具有更强大的功能和更灵活的数据处理能力,可以更好地满足处理不同类型数据的需求。

通过使用外部ETL工具,可以将CSV文件中的数据转换为适合数据库表的结构,并动态地创建表。这样可以确保数据的准确性和一致性,并提高数据加载的效率和可靠性。

总之,当需要处理不同类型的数据并动态创建表时,建议使用外部ETL工具来进行数据加载,而不是仅仅使用\copy命令。这样可以更好地满足数据处理的需求,并提高数据加载的效率和可靠性。

0
0 Comments

动态从CSV文件创建表格的问题出现的原因是无法直接从CSV文件中获取表格的结构信息,导致无法正确地创建相应的表格。然而,我们可以通过创建一个与pg_dump兼容的文件来解决这个问题,该文件包含了适当的"create table"部分,我们可以使用它来加载数据。

解决方法如下:

1. 首先,我们需要将CSV文件转换成pg_dump兼容的文件格式。可以使用以下命令将CSV文件转换成pg_dump格式的SQL文件:

   csvsql --dialect postgresql --insert your_csv_file.csv > your_sql_file.sql
   

这将生成一个包含INSERT语句的SQL文件,其中还包含表的结构信息。

2. 接下来,我们需要创建一个新的空表格来加载数据。可以使用以下命令创建表格:

   CREATE TABLE your_table_name ();
   

这将创建一个名为"your_table_name"的空表格。

3. 然后,我们可以使用pg_dump生成的SQL文件来加载数据并创建表格。可以使用以下命令执行SQL文件:

   psql -d your_database_name -f your_sql_file.sql
   

这将执行SQL文件中的所有命令,包括创建表格和插入数据。

通过这种方法,我们可以动态地从CSV文件中创建表格,并将数据加载到数据库中。这对于需要频繁更新和导入数据的应用程序非常有用。

0