在django模型中使用mssql工具bcp命令的实用程序
django-sql-server-bcp的Python项目详细描述
#django sql server bcp
一个用于在django型号中使用mssql tools bcp命令的实用程序。
\OLS for Mac预览版现已提供/
-Linux版:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux安装工具
1。在Linux上,必须在odbc.ini中使用Microsoft的驱动程序。否则,dsn指定的驱动程序不受支持的情况会出现错误。`。
如果使用pyodbc,则驱动程序可能如下:
`` `
` ` `
[我的dsn地址]
driver=/usr/local/lib/libtdsodbc.so
` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` `
将其更改为(例如在ubunubunubuntu上):
` ` ` ` ` ` ` ` ` ` ` ` SQL/lib64/lib msodbcsql-13.1.sO.6.0
```
>2.确保"bcp"可以执行
`sudo ln-s/opt/mssql tools/bin/bcp/usr/local/bin/bcp`
>3。在windows上,通过odbc dns名称使用bcp被证明是痛苦的,或者是直接中断的。*如果可用,Django SQL Server BCP*将首选通过服务器主机连接。因此,如果在让bcp在windows上工作时遇到问题,请在django databases设置中设置"host"。在django设置中可以保留"dsn"名称。django.db导入模型中的django.db导入模型中的django.db导入模型中的django.db导入模型中的django示例模型:
U位数s=15,小数位数=4)
timestamp=models.datetimefield()
`````
**示例bcp与"stockprice"模型一起使用。**
然后通过bcp保存:
``python
from random import random
from models import stockprice
rows=[]
for i in range(1,row\u count):
rows.append(dict(
symbol='goog',
price='%.2f'%(100*random()),
timestamp=str(datetime.datetime.now())
))
bcp.save(rows)
>princp.save(rows)
````
>您应该会看到类似以下输出的输出:
`````
``````开始拷贝……
>网络数据包大小(字节):4096
>时钟时间(ms)总计:10平均值:(49900.0行/秒。)
```
`````````````````````````
-字符串数据不能包含逗号或换行符,因为大容量数据文件格式是脆弱的csv格式。
-未经测试的长字符串、日期、二进制数据。
-不能在涉及bcp正在访问的同一表的django事务中使用-最终将锁定该表,bcp将无法对其获取锁定,bcp将无限期等待。
troublehoot在Linux上,DSN指定了一个不受支持的驱动程序,请参阅上面的要求,在Windows上,在Windows中设置ODBC数据源时,请选择"SQL Server Native Client XX"。不是"SQL Server"或"SQL Server的ODBC驱动程序xx"。有关详细信息,请访问https://docs.microsoft.com/en-us/sql/relational databases/native client odbc bulk copy operations/performing bulk copy operations odbc
\tion. 在32位和64位ODBC管理器下添加您的ODBC连接。
您正在使用的ODBC驱动程序的版本:版本13。你可以解决这个问题从"程序和功能"中查找版本,然后安装13.1版,您可以找到:https://www.microsoft.com/en-us/download/details.aspx?id=53339
` bcp `想秘密地访问一些文件,但在不告诉您原因的情况下失败。
-要打开文件访问审核,您可能会发现'bcp'正在尝试创建`/var/www/.odbc.ini`或access`/etc/localtime`
``bash
install auditd
sudo apt install auditd
#对success=0的所有文件打开文件访问审核
sudo auditctl-w/-k bcp_debug
文件bcp被拒绝访问
-由于某种原因,bcp试图在www data的主文件夹(例如/var/www/.odbc.ini)中创建".odbc.ini"。请确保www data的主文件夹可由www data写入
-另一个问题是,microsoft docs说要将"nul"传递到format命令,在windows上是nul文件,但在linux上,bcp将尝试打开名为"nul"的文件,但由于权限错误而失败。在Linux上,传递"/dev/null"而不是"nul"。
锁定表的事务
检查事务:
``sql
从sys.dm_exec请求中选择s.*
r
s.session上的内部连接sys.dm_exec会话s
```
一个用于在django型号中使用mssql tools bcp命令的实用程序。
\OLS for Mac预览版现已提供/
-Linux版:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux安装工具
1。在Linux上,必须在odbc.ini中使用Microsoft的驱动程序。否则,dsn指定的驱动程序不受支持的情况会出现错误。`。
如果使用pyodbc,则驱动程序可能如下:
`` `
` ` `
[我的dsn地址]
driver=/usr/local/lib/libtdsodbc.so
` ` ` ` `
` ` ` ` ` ` ` ` ` ` ` ` ` `
将其更改为(例如在ubunubunubuntu上):
` ` ` ` ` ` ` ` ` ` ` ` SQL/lib64/lib msodbcsql-13.1.sO.6.0
```
>2.确保"bcp"可以执行
`sudo ln-s/opt/mssql tools/bin/bcp/usr/local/bin/bcp`
>3。在windows上,通过odbc dns名称使用bcp被证明是痛苦的,或者是直接中断的。*如果可用,Django SQL Server BCP*将首选通过服务器主机连接。因此,如果在让bcp在windows上工作时遇到问题,请在django databases设置中设置"host"。在django设置中可以保留"dsn"名称。django.db导入模型中的django.db导入模型中的django.db导入模型中的django.db导入模型中的django示例模型:
U位数s=15,小数位数=4)
timestamp=models.datetimefield()
`````
**示例bcp与"stockprice"模型一起使用。**
然后通过bcp保存:
``python
from random import random
from models import stockprice
rows=[]
for i in range(1,row\u count):
rows.append(dict(
symbol='goog',
price='%.2f'%(100*random()),
timestamp=str(datetime.datetime.now())
))
bcp.save(rows)
>princp.save(rows)
````
>您应该会看到类似以下输出的输出:
`````
``````开始拷贝……
>网络数据包大小(字节):4096
>时钟时间(ms)总计:10平均值:(49900.0行/秒。)
```
`````````````````````````
-字符串数据不能包含逗号或换行符,因为大容量数据文件格式是脆弱的csv格式。
-未经测试的长字符串、日期、二进制数据。
-不能在涉及bcp正在访问的同一表的django事务中使用-最终将锁定该表,bcp将无法对其获取锁定,bcp将无限期等待。
troublehoot在Linux上,DSN指定了一个不受支持的驱动程序,请参阅上面的要求,在Windows上,在Windows中设置ODBC数据源时,请选择"SQL Server Native Client XX"。不是"SQL Server"或"SQL Server的ODBC驱动程序xx"。有关详细信息,请访问https://docs.microsoft.com/en-us/sql/relational databases/native client odbc bulk copy operations/performing bulk copy operations odbc
\tion. 在32位和64位ODBC管理器下添加您的ODBC连接。
您正在使用的ODBC驱动程序的版本:版本13。你可以解决这个问题从"程序和功能"中查找版本,然后安装13.1版,您可以找到:https://www.microsoft.com/en-us/download/details.aspx?id=53339
` bcp `想秘密地访问一些文件,但在不告诉您原因的情况下失败。
-要打开文件访问审核,您可能会发现'bcp'正在尝试创建`/var/www/.odbc.ini`或access`/etc/localtime`
``bash
install auditd
sudo apt install auditd
#对success=0的所有文件打开文件访问审核
sudo auditctl-w/-k bcp_debug
文件bcp被拒绝访问
-由于某种原因,bcp试图在www data的主文件夹(例如/var/www/.odbc.ini)中创建".odbc.ini"。请确保www data的主文件夹可由www data写入
-另一个问题是,microsoft docs说要将"nul"传递到format命令,在windows上是nul文件,但在linux上,bcp将尝试打开名为"nul"的文件,但由于权限错误而失败。在Linux上,传递"/dev/null"而不是"nul"。
锁定表的事务
检查事务:
``sql
从sys.dm_exec请求中选择s.*
r
s.session上的内部连接sys.dm_exec会话s
```