【问题标题】:SQL - Loading data from CSV file & using that data to find instances in another tableSQL - 从 CSV 文件加载数据并使用该数据在另一个表中查找实例
【发布时间】:2017-07-13 16:31:58
【问题描述】:

我是 SQL 新手,我想知道是否有任何方法可以在表中搜索具有来自外部表(csv 文件)列的值的实例。为了以更清晰的方式解释这一点,这就是我正在处理的内容:如果 csv 文件中的一列包含纬度,另一列包含经度;我想搜索一个包含多个位置信息的表格,表格中指定了它们的纬度和经度。

我想检索有关特定位置的信息,其中包含纬度和经度作为 csv 文件的输入。

它看起来像这样吗? :

CREATE TABLE MyTable(  
  latitude DECIMAL(5, 2) NOT NULL, 
  longitude DECIMAL(5, 2) NOT NULL
);

LOAD DATA INFILE 'C:\Users\Admin\Desktop\Catalog.csv'
INTO TABLE MyTable
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'

SELECT
  main.object_id, 
  main.latitude, 
  main.longitude, 
  main.Some_Information

FROM
  location_info AS main,
  MyTable AS temp

WHERE
  main.latitude = temp.latitude AND
  main.longitude = temp.longitude

我也尝试过使用 psql 的 \copy 比如:

\copy MyTable FROM 'C:\Users\Admin\Desktop\Catalog.csv' WITH CSV;

这里给出 -> http://postgresguide.com/utilities/copy.html。 但这也不起作用。在复制时或附近的“\”附近有一个错误,但这可能是因为存在旧版本的 psql。 另外我不是超级用户,因此使用 \copy 而不是 COPY FROM。

我还尝试使用临时表并在其旁边使用 \copy。它给出了与上面相同的错误。

【问题讨论】:

  • 欢迎来到 SO,CrunchyMint。您在问题中标记了多个不同的数据库。如果您在帖子中使用 PostgreSQL,请删除您的 mysqlsql-server 标签,因为它们是完全不同的 RDMS。
  • 你得到的确切错误是什么?
  • 抱歉,我编辑了它们。
  • ^ "DATA" 处或附近的语法错误 ---> 这就是我为上述代码得到的结果
  • and ^ syntax error at or near "\" ---> 是我得到的 \copy

标签: sql csv psql


【解决方案1】:

PostgreSQL 不支持您使用的 LOAD DATA 语法。您需要改用COPY

您的工作流程应该更像:

CREATE TABLE MyTable(  
  latitude DECIMAL(5, 2) NOT NULL, 
  longitude DECIMAL(5, 2) NOT NULL
);

COPY MyTable(latitude, longitude) 
FROM 'C:\Users\Admin\Desktop\Catalog.csv' WITH CSV;

SELECT
  main.object_id, 
  main.latitude, 
  main.longitude, 
  main.Some_Information
FROM
  location_info AS main
  JOIN MyTable AS temp
    on main.latitude = temp.latitude 
    and main.longitude = temp.longitude  

这里需要注意三个主要事项。

  1. 我已经从COPY 命令中删除了您的\
  2. 我已经指定了您尝试使用COPY 命令插入的列。如果列在 CSV 文件中的顺序不同,只需在 COPY 表达式中重新排序即可。
  3. 我已将您的联接语法更改为标准 ANSI 联接。逻辑是相同的,但出于可读性/兼容性原因,这是一个更好的标准。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多