Linux下将excel数据导入到mssql数据库中的方法

yizhihongxing

下面是“Linux下将excel数据导入到mssql数据库中的方法”的完整攻略:

准备工作

  1. 安装FreeTDS和unixODBC

    sudo apt-get update
    sudo apt-get install freetds-dev unixodbc-dev

  2. 安装Python包pyodbc

    pip install pyodbc

步骤

  1. 创建一个ODBC数据源

    在Linux命令行窗口中运行下面的命令,创建数据源“mydatasource”,并指定MSSQL服务器的地址、端口、数据库名称、用户名和密码:

    sudo odbcinst -i -s -f /usr/share/tdsodbc/odbcinst.ini
    sudo odbcinst -i -d -f /usr/share/tdsodbc/odbc.ini
    sudo nano /etc/odbc.ini

    编辑odbc.ini文件,添加以下内容:

    [mydatasource]
    Driver = FreeTDS
    Servername = SQLServer
    Database = mydatabase
    UserName = myusername
    Password = mypassword
    Port = 1433
    TDS_Version = 7.0

    注意,其中的“Driver”、“Servername”、“Database”、“UserName”和“Password”应该修改为你自己的服务器地址、数据库名称和登录信息。

  2. 编写Python脚本

    在Linux命令行窗口中运行下面的命令,在当前目录下创建一个名为“import_excel.py”的Python脚本:

    nano import_excel.py

    编辑import_excel.py文件,添加以下内容:

    ```python
    import pyodbc
    import pandas as pd

    def import_data(excel_file):
    # Load Excel file
    data = pd.read_excel(excel_file)

    # Connect to ODBC data source
    cnxn = pyodbc.connect('DSN=mydatasource')
    cursor = cnxn.cursor()
    
    # Insert data into database
    for row in data.itertuples():
        cursor.execute("""
            INSERT INTO mytable (column1, column2, column3)
            VALUES (?, ?, ?)
        """, row.column1, row.column2, row.column3)
    
    cursor.commit()
    cursor.close()
    cnxn.close()
    

    if name == 'main':
    import_data('example.xlsx')
    ```

    注意,其中的“mydatasource”和“mytable”应该修改为你自己的数据源和数据表名称,而“example.xlsx”就是你要导入的Excel文件名。

  3. 运行Python脚本

    在Linux命令行窗口中运行下面的命令,运行Python脚本:

    python import_excel.py

    脚本会自动将Excel文件的数据导入到MSSQL数据库中。

示例

以下是两条示例说明:

示例1:导入简单表格数据

假设我们要将以下的Excel表格数据导入到MSSQL数据库中:

Name Age Gender
Alice 25 Female
Bob 30 Male
Charlie 35 Male
  1. 创建ODBC数据源

    在命令行窗口中执行如下命令,创建一个名为“mydatasource”的ODBC数据源,用于连接MSSQL服务器:

    sudo odbcinst -i -s -f /usr/share/tdsodbc/odbcinst.ini
    sudo odbcinst -i -d -f /usr/share/tdsodbc/odbc.ini
    sudo nano /etc/odbc.ini

    编辑odbc.ini文件,添加以下内容:

    [mydatasource]
    Driver = FreeTDS
    Servername = myserver
    Database = mydatabase
    UserName = myusername
    Password = mypassword
    Port = 1433
    TDS_Version = 7.0

    其中,“myserver”、“mydatabase”、“myusername”和“mypassword”应该替换为你自己的服务器地址、数据库名称、登录用户名和密码。

  2. 编写Python脚本

    在命令行窗口中执行如下命令,创建一个名为“import_data.py”的Python脚本:

    nano import_data.py

    编辑import_data.py文件,添加以下内容:

    ```python
    import pyodbc
    import pandas as pd

    def import_data(excel_file):
    # Load Excel file
    data = pd.read_excel(excel_file)

    # Connect to ODBC data source
    cnxn = pyodbc.connect('DSN=mydatasource')
    cursor = cnxn.cursor()
    
    # Insert data into database
    for row in data.itertuples():
        cursor.execute("""
            INSERT INTO mytable (Name, Age, Gender)
            VALUES (?, ?, ?)
        """, row.Name, row.Age, row.Gender)
    
    cursor.commit()
    cursor.close()
    cnxn.close()
    

    if name == 'main':
    import_data('example.xlsx')
    ```

    其中,“mytable”应该替换为你自己的数据表名称,“example.xlsx”就是你要导入的Excel文件名,保存并退出文件编辑。

  3. 运行Python脚本

    在Linux命令行窗口中,执行如下命令,运行Python脚本:

    python import_data.py

    脚本会自动将Excel文件中的数据导入到MSSQL数据库中的“mytable”数据表里面。

示例2:导入复杂表格数据

假设我们要将以下的Excel表格数据导入到MSSQL数据库中:

City Address Latitude Longitude
Beijing Zhongguancun street,Haidian district,Beijing 39.977679 116.3134083
Guangzhou Tianhe district,Guangzhou,GD,China 23.128994 113.259245
Hangzhou Xihu district,Hangzhou,ZJ,China 30.2595522 120.1368619

其中,Address字段包含中英文、数字和逗号等复杂字符。

  1. 创建ODBC数据源

    同上。

  2. 编写Python脚本

    在命令行窗口中执行如下命令,创建一个名为“import_data.py”的Python脚本:

    nano import_data.py

    编辑import_data.py文件,添加以下内容:

    ```python
    import pyodbc
    import pandas as pd

    def import_data(excel_file):
    # Load Excel file
    data = pd.read_excel(excel_file)

    # Connect to ODBC data source
    cnxn = pyodbc.connect('DSN=mydatasource')
    cursor = cnxn.cursor()
    
    # Insert data into database
    for row in data.itertuples():
        cursor.execute("""
            INSERT INTO mytable (City, Address, Latitude, Longitude)
            VALUES (?, ?, ?, ?)
        """, row.City, row.Address, row.Latitude, row.Longitude)
    
    cursor.commit()
    cursor.close()
    cnxn.close()
    

    if name == 'main':
    import_data('example.xlsx')
    ```

    其中,“mytable”应该替换为你自己的数据表名称,“example.xlsx”就是你要导入的Excel文件名,保存并退出文件编辑。

  3. 运行Python脚本

    在Linux命令行窗口中,执行如下命令,运行Python脚本:

    python import_data.py

    脚本会自动将Excel文件中的数据导入到MSSQL数据库中的“mytable”数据表里面。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux下将excel数据导入到mssql数据库中的方法 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • navcat无法远程连接mysql数据库解决办法

    navcat无法远程连接mysql数据库,一般都是因为本地ip没有访问权限,服务器上执行下面指令即可解决 mysql -u root -p GRANT ALL PRIVILEGES ON *.* TO ‘mysql数据库用户名’@’本地ip’ IDENTIFIED BY ‘mysql数据库密码’ WITH GRANT OPTION; flush privil…

    MySQL 2023年4月13日
    00
  • 太坑了吧!一次某某云上的redis读超时排查经历

    一次排查某某云上的redis读超时经历 性能排查,服务监控方面的知识往往涉及量广且比较零散,如何较为系统化的分析和解决问题,建立其对性能排查,性能优化的思路,我将在这个系列里给出我的答案。 问题背景 最近一两天线上老是偶现的redis读超时报警,并且是业务低峰期间,甚是不解,于是开始着手排查。 以下是我的排查思路。 排查思路 查阅 redis 慢查询日志 既…

    Redis 2023年4月13日
    00
  • 深入理解MySQL数据类型的选择优化

    深入理解MySQL数据类型的选择优化攻略 背景 在设计MySQL表结构时,数据类型的选择十分重要。不正确的数据类型选择可能会在存储、查询和计算等方面带来不必要的性能影响。因此,选择正确的数据类型对于保证MySQL数据表的高性能和可靠性至关重要。 选择数据类型的基本原则 在选择MySQL数据类型时,应考虑以下几个方面: 选择最小合适的数据类型。例如,如果一个字…

    database 2023年5月19日
    00
  • sql 中 case when 语法使用方法

    当我们处理SQL查询时,有时候我们需要对数据进行分类和排序。SQL中Case When语法就是为了解决这个问题而存在的。它可以将数据按照我们指定的条件进行分类,并进行相应的处理,还可以在查询语句中进行逻辑控制。下面我将详细讲解Case When语法的使用方法。 基础语法 CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ……

    database 2023年5月21日
    00
  • [视频教程] 使用docker的方式安装redis

    直接使用docker拉取redis的镜像,并且进行端口映射与文件目录共享,这样可以直接在宿主机的端口上就可以进行访问了。其实本质上也是在一个简化版的ubuntu的容器内安装好的redis-server服务。 将docker修改为163镜像源在/etc/docker/daemon.json文件中添加下面参数{ “registry-mirrors” : [“ht…

    Redis 2023年4月11日
    00
  • swoole+websocket+redis实现一对一聊天

    如同web端的QQ和微信一样,这是一个web端的聊天程序。 环境:linux(centos) + php7.2 + swoole扩展 + redis + mysql Redis 实现每个连接websocket的服务都唯一绑定一个用户。通过 用户账号 = websocket fd 存到redis中。 Mysql 实现离线消息池。如果一个用户不在线,则其他用户发…

    Redis 2023年4月11日
    00
  • Oracle日常维护中管理用户以及重做日志文件的方法

    Oracle数据库需要定期进行维护,包括管理用户、管理重做日志文件等。下面是管理用户以及管理重做日志文件的方法: 管理用户 Oracle数据库中,每个用户都有一个用户名和密码。管理员可以使用以下命令对用户进行管理: 创建用户 管理员可以使用以下命令创建一个新用户,其中username表示新用户的用户名,password表示用户的密码,tablespace_n…

    database 2023年5月21日
    00
  • 数据库学习建议之提高数据库速度的十条建议

    下面我将详细讲解“数据库学习建议之提高数据库速度的十条建议”的完整攻略,包括十条建议的内容解释和两个示例。 1. 选择适合的数据类型 选择适合的数据类型可以更好地利用计算机的资源,提高数据库的性能。通常情况下,使用小的数据类型比使用大的数据类型更有效率。例如,使用整数类型代替浮点数类型或double类型可以减小存储空间和提高查询性能。 2. 避免使用NULL…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部