【问题标题】:How to import CSV file data into my database using pandas and pyodbc?如何使用 pandas 和 pyodbc 将 CSV 文件数据导入我的数据库?
【发布时间】:2018-10-11 07:33:15
【问题描述】:

导入包

import pandas as pd
import pyodbc

建立连接

conn = pyodbc.connect("Driver={ODBC Driver 17 for SQL Server}; Server=servername; Database=databasename; Trusted_Connection=Yes")
cur = conn.cursor()

保存构建表的 SQL 代码

string = "CREATE TABLE TESTDATA(Log int PRIMARY KEY, User varchar(15))"

tablename = re.search("CREATE TABLE ([a-z A-Z]+)\(",string)
if tablename:
    tablename = tablename.group(1)

如果表名不在sql表列表中,则建表

if not cur.table(table=tablename).fetchone():
    cur.execute(string)
    conn.commit()

读取 data.csv 文件

df = pd.read_csv(r"data.csv")
df.to_sql(name="TESTDATA", con=conn, index=True, index_label="id")

文件示例

data.csv:

Log  User
1    Jack
2    Jackie
3    Jacky

我希望将这些数据导入 SQL 数据库,但失败了

我不知道哪里出了问题,但它成功构建了表格并且无法将 csv 文件读入表格中

【问题讨论】:

  • 你给了我们一些代码,太好了。不过,你还没有说你被困在哪里。就目前而言,这个问题很可能已经结束,因为不清楚你在问什么。
  • 哎呀,您设法将大部分收到​​的最糟糕的东西放在第一个问题中:只有代码,没有上下文,没有解释为什么 odbc 和 pandas,没有描述问题和代码的错误未格式化...您真的应该阅读How to Ask 以了解如何编辑此问题以至少解决我的前三句话,最终添加其他改进并能够在将来提出更好的问题:-)
  • 为什么将格式还原为代码?没有它很难阅读:..
  • 您的 CSV 文件是否真的在逗号分隔符的两侧有空格,即 Log , User 而不是 Log,User ...?
  • 假设是逐列而不是这种格式。我不知道如何在这里显示。

标签: python pandas pyodbc


【解决方案1】:

“CSV”是“逗号分隔值”的首字母缩写词。不幸的是,如今“CSV”一词几乎适用于任何包含数据的文本文件,即使是那些不使用逗号作为字段分隔符的文件。

不过,除非另有说明,否则许多实用程序都假定使用逗号分隔符。 pandas read_csv 方法就是其中之一:

sep : str, 默认‘,’

所以对于包含

的文本文件
Log  User
1    Jack
2    Jackie
3    Jacky

代码

df = pd.read_csv(r"C:\Users\Gord\Desktop\data.txt")
print(df.to_dict())

生产

{'Log  User': {0: '1    Jack', 1: '2    Jackie', 2: '3    Jacky'}}

请注意,只有一个名为 'Log User' 的列,并且每一行都包含文本文件中的整行。

如果您想正确解析该文件,则需要使用

df = pd.read_csv(r"C:\Users\Gord\Desktop\data.txt", delim_whitespace=True)

【讨论】:

    猜你喜欢
    • 2019-06-23
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多