它只nvarchar
支持多字节字符吗?如果是这种情况,除了存储问题之外,还有什么意义varchars
吗?
我正在将 pandas Dataframe 写入 redshift 数据库,pandas.to_sql()
如下所示:
from sqlalchemy import create_engine
import pandas as pd
conn = create_engine('postgresql://user:password@redshift-url.amazonaws.com:5439/db')
dataframe.to_sql('table_name', conn, index=False, if_exists='replace', schema='schema_name')
Run Code Online (Sandbox Code Playgroud)
在这个数据帧中,我有timestamp
一个看起来像这样的列2020-03-02
,但是当我将它写入数据库时,它会存储为 varchar 并且我无法使用此列来绘制需要时间戳格式的图表。
使用 pandas.to_sql() 将数据写入数据库时有没有办法定义列类型?我不想在我正在编写的表之外创建视图或另一个表,因为那样我需要删除当前表,因为另一个表将与原始表相关,并且我会收到错误cant drop table because other objects depend on it
。
我正在尝试将 pandas 中的表导出到 Microsoft SQL Server Express 数据库。
Pandas 读取编码为 utf8 的 CSV 文件。如果我执行 df.head(),我可以看到 pandas 正确显示外文字符(它们是希腊字母)
但是,导出到 SQL 后,这些字符显示为问号和零的组合。
我究竟做错了什么?
我找不到 to_sql() 有任何设置编码的选项。我想我必须在设置 SQL 引擎时更改语法,但具体如何更改呢?
这就是我一直在尝试的:
import numpy as np
import pandas as pd
from sqlalchemy import create_engine, MetaData, Table, select
import sqlalchemy as sqlalchemy
ServerName = my_server_name
Database = my_database
params = '?driver=SQL+Server+Native+Client+11.0'
engine = create_engine('mssql+pyodbc://' + ServerName + '/'+ Database + params, encoding ='utf_8', fast_executemany=True )
connection = engine.raw_connection()
cursor = connection.cursor()
file_name = my_file_name
df = …
Run Code Online (Sandbox Code Playgroud)