我正在将大量数据导入 PostgreSQL 服务器(跨服务器上的多个数据库)。
当我上次尝试导入数据时,它有效地“崩溃”了我的机器(Ubuntu 10.0.4),因为 /var/log/postgres 包含超过360G的文件(而我只进行了大约 1 个导入的一半)。
我不确定日志文件的用途(我猜它必须是为了符合 ACID 等)。但是我想知道是否有办法减少导入大量数据时生成的日志文件的大小。
我正在尝试将数据导入 SQL Server。我可以通过导入和导出数据向导导入。我无法使用BULK IMPORT或OPENROWSET因为文件不在服务器机器上从我的机器导入。IED 向导如何将数据插入其目标数据库?是一行一行的吗?
从我的机器导入数据还有其他可能的解决方案吗?
我正在尝试将此 CSV 文件导入 MySQL,该文件似乎可选地由多个字符括起来。不幸的是,MySQL 只支持一个字符作为字段分隔符。
我被困在 SQL 中完成整个过程,因为它是更大程序的一部分 - 所以脚本是不可能的。
数据示例:
reportdata, commission, total, chargeback, company
",123,""$116.00 "",""$604.00 "",""($88.00)"", foo
Run Code Online (Sandbox Code Playgroud)
除了尝试在临时表上执行一堆字符串操作之外,我感到很困惑。
有任何想法吗?
我正在运行Windows 7 64 位,使用适用于 Windows 64 位的 Oracle DB 11g R2。我将 Oracle SQL Developer Release 3.0 (4.0.2.15.21) 作为我的数据库的 GUI。
我按照这篇文章中关于如何导入 Oracle .DMP 文件的说明进行操作。我在命令提示符中发出了这个命令:C:\>imp sys@dev/password12345 FROMUSER=FOOADMIN TOUSER=FOOADMIN file=c:\fooadmin.dmp full=yes
然后它提示我输入密码,我在其中输入正确的密码,然后收到此错误:
IMP-00058: ORACLE error 12154 encountered
ORA-12154: TNS:could not resolve the connect identifier specified
IMP-00000: Import terminated unsuccessfully
Run Code Online (Sandbox Code Playgroud)
Actual Question: How do I fix this error and be able to import the .dmp file successfully? Or what are some steps I can head towards to potentially …
我正在寻找一种在 mongodb 中加载 csv 数据并指定我想为每列创建的类型的方法?
我一直在使用 mongoimport 但我发现它很痛苦,因为似乎没有任何方法可以指定要用于 csv 文件中特定列的数据类型。
我加载数据...
mongoimport --drop -d myDatabase -c myCollection --type csv --fields name --file myFile.csv
Run Code Online (Sandbox Code Playgroud)
然后我进行分析以查看 mongo 实际创建的类型。
> db.artist.itunes.feed.count()
36545
> db.artist.itunes.feed.count( { 'name' : { $type : 2 } } )
36511
> db.artist.itunes.feed.count( { 'name' : { $type : 1 } } )
1
> db.artist.itunes.feed.count( { 'name' : { $type : 16 } } )
33
Run Code Online (Sandbox Code Playgroud)
然后我做手术来纠正这样的错误......
db.artist.itunes.feed.find( { 'name' : { $type : 1 } } ).forEach( …Run Code Online (Sandbox Code Playgroud) 根据https://www.sqlite.org/cli.html#csv,
Run Code Online (Sandbox Code Playgroud)sqlite> .mode csv sqlite> .import C:/work/somedata.csv tab1有两种情况需要考虑:(1) 表“tab1”以前不存在;(2) 表“tab1”已经存在。
在第一种情况下,当该表以前不存在时,会自动创建该表,并使用输入 CSV 文件第一行的内容来确定该表中所有列的名称。换句话说,如果该表以前不存在,则 CSV 文件的第一行将被解释为列名,实际数据从 CSV 文件的第二行开始。
对于第二种情况,当表已经存在时,CSV 文件的每一行,包括第一行,都被假定为实际内容。如果 CSV 文件包含列标签的初始行,则该行将被读取为数据并插入到表中。为避免这种情况,请确保该表以前不存在。
我试过这个并得到一个错误:
sqlite> .mode csv
sqlite> .import C:/work/somedata.csv tab1
Run Code Online (Sandbox Code Playgroud)
但是,如果我先创建表,那么它“有效”,但我最终会得到一个不需要的标题行,因为它是情况 (2):
$ cd /tmp
$ rm -f database.sqlite3
$ ( echo 'a,b,c' ; echo '1,2,3' ) > somedata.csv
$ sqlite3 database.sqlite3
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .version
SQLite 3.7.13 2012-07-17 17:46:21 65035912264e3acbced5a3e16793327f0a2f17bb
sqlite> .mode csv …Run Code Online (Sandbox Code Playgroud) 在配置我们的新服务器(IBM X3650M4、2x Intel Xeon E5-2620、64G RAM、RAID 10(4x 240G SSD))时,我们遇到了一个奇怪的问题。我们试图将转储 ( mydumper) 从我们的(旧)生产环境导入到我们的新环境中,但我们几乎无法这样做。
转储为47G(压缩),+/- 4500 个表,最大的表为 7.1G(54285914 行)、2.2G、1.7G 和 1.7G。
我们试图myloader用 12 个(或 8 个)线程运行,但大多数时候都失败了。几分钟后,myloader遇到大桌子和摊位。一些工具显示没有更多活动(htop没有 CPU 负载,iostat没有写入或读取),mytop显示 4 个(长时间运行)永远不会完成的查询,大多数innotop屏幕都被冻结(因为SHOW INNODB STATUS不再返回任何结果)。当我尝试重新启动时mysql也失败了,因为mysql无法杀死多个线程。唯一的补救方法是使用killall -9 mysqld mysql.
我们正在使用以下 mysql 配置:
# cat /etc/mysql/my.cnf
# Ansible managed
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
ssl_cert = /etc/mysql/client-cert.pem
ssl_key = …Run Code Online (Sandbox Code Playgroud) 我想将 15GB 文件逗号分隔的 gzip 压缩文件导入 Sqlite 3,而不必使用临时文件。
我想运行如下命令:
zcat input/surgical_code.csv.gz | tail -n +2 | sqlite3 db.sqlite ".import /dev/stdin surgical_code"
Run Code Online (Sandbox Code Playgroud)
这会解压缩文件,跳过标题并尝试导入。
问题是我无法在与 SQlite3 相同的引用命令上指定.mode cvs和.separator ","。
有任何想法吗?
使用$(echo -e 'line1\nline2')对我不起作用:
gzcat input/surgical_code.csv.gz | tail -n +2 | sqlite3 db.sqlite $(echo -e '.mode csv \n .separator \",\"\n.import /dev/stdin')
Run Code Online (Sandbox Code Playgroud)
Error: mode should be one of: ascii column csv html insert line list tabs tcl
最近我不得不将 7 Gb MySQL 转储文件导入 MySQL 5.6 服务器。在具有 1 Gb RAM 的单核 CPU 上导入大约需要 7 个小时。
其他人在 MySQL 服务器上测试了导入,其中包括以下设置:
innodb_buffer_pool_size = 8G
query_cache_size = 300M
Run Code Online (Sandbox Code Playgroud)
我有点怀疑这些设置的相关性(是的,我什至认为设置如此大的查询缓存很糟糕)。这会有所作为吗?这些设置不是仅在查询数据库时使用,因此与导入无关吗?
如果是,应该设置哪些设置来加速大型转储文件的导入?
根据官方文档,这些值应该暂时设置:
unique_checks = 0
foreign_key_checks = 0
Run Code Online (Sandbox Code Playgroud)
我在这里读到它也应该设置
innodb_flush_log_at_trx_commit = 2
Run Code Online (Sandbox Code Playgroud)
但我认为这不会有帮助,因为默认情况下在 mysqldump 命令(--opt选项)中已禁用自动提交模式(每次插入时将日志刷新到磁盘)。
我正在使用 sql server 2008 r2 express。当我使用导入数据功能将数据从一个数据库导入到另一个数据库时,我遇到了一些问题。我正在使用 SSMS 来做到这一点。在使用向导时,我选择“选择身份插入”选项来复制身份元素属性。通过使用此标识元素可以正确导入。但是导入后我比较了源数据库和目标数据库,发现了一些变化!!表中的所有 NULL 值都被 0 替换。那么我该如何避免它。在使用导入数据向导时,是否有任何选项可以将其复制为它?请帮忙