如何在 Navicat 复制和粘贴数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Navicat 复制和粘贴数据相关的知识,希望对你有一定的参考价值。

右击要被复制的表,选择前1000行,查看其数据

2
拖拽选择你想复制的记录范围,然后按下【Ctrl + C】,或者右击选择【复制】

3
右击要粘贴的表上,选择编辑前200行

4
选择好要粘贴的范围,然后右击选择【粘贴】

5
粘贴时,标题也会粘贴进来,此时再将标题行选中,按 Delete 键删除即可

END
方法二:Excel拷贝法(可导入mysql数据库)
打开Excel,选择并复制你想拷贝到表中的范围

右击要粘贴的表,选择编辑前200行

选中要粘贴的范围,然后右击粘贴

好了,你在excel中复制的数据,已经完全拷贝到表中啦 \\(^o^)/

你可以通过 Navicat 将 mysql 中的数据导出到Excel。然后用这种方法,可将其导入到 SQL Server 中
参考技术A Navicat 支持快速地在各种数据库系统间传输数据,传输指定SQL格式以及编码的纯文本文件。执行不同数据库的批处理作业并在指定的时间运行。其他功能包括导入向导、导出向导、查询创建工具、报表创建工具、数据同步、备份、工作计划及更多。Navicat 可复制记录类型为 Insert 或 Update 语句、复制栏位名以及保存数据为一个文件。具体教程可参考官网资料http://www.formysql.com/jiqiao/fuzhi-leixing.html 参考技术B navicat复制粘贴行记录,好像不行,反正我没试出来。可以用导入导出。前提两张表结构一样。A表,导出-->"当前xx条记录"-->导出格式选择DBase文件。B表,导入-->"导入类型选择DBase"-->选择刚才导出的那个文件-->下一步到底。

如何在 QTableView 中复制和粘贴多行/列(来自 pandas 数据框的数据源)? [复制]

【中文标题】如何在 QTableView 中复制和粘贴多行/列(来自 pandas 数据框的数据源)? [复制]【英文标题】:How to Copy and Paste multiple rows/columns in QTableView (data sources from pandas dataframe)? [duplicate] 【发布时间】:2021-09-15 17:35:33 【问题描述】:

我在 GUI 中使用Pyqt5 中的QTableView 显示数据框。我应该如何对其进行编码,以便用户可以同时复制粘贴多行/列以及行索引(用于行)和标题(用于列)?

我在下面举了一个简单的例子。我假设我们需要一个QTableView 的子类并为它定义一个keyPressEvent

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
import pandas as pd

class TableModel(QtCore.QAbstractTableModel):

    def __init__(self, data):
        super(TableModel, self).__init__()
        self._data = data

    def data(self, index, role):
        if role == Qt.DisplayRole:
            value = self._data.iloc[index.row(), index.column()]
            return str(value)

    def rowCount(self, index):
        return self._data.shape[0]

    def columnCount(self, index):
        return self._data.shape[1]

    def headerData(self, section, orientation, role):
        # section is the index of the column/row.
        if role == Qt.DisplayRole:
            if orientation == Qt.Horizontal:
                return str(self._data.columns[section])

            if orientation == Qt.Vertical:
                return str(self._data.index[section])

class View(QTableView):
    def __init__(self):
        super(View, self).__init__(parent=None)

    def keyPressEvent(self, event):
        if event.matches(QKeySequence.Copy):
            # some code to get copy_text?  
            QApplication.clipboard().setText(copy_text)


        QTableView.keyPressEvent(self, event)

class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        self.table = View() # use subclass View() instead of self.table = QtWidgets.QTableView()

        data = pd.DataFrame([
          [1, 9, 2],
          [1, 0, -1],
          [3, 5, 2],
          [3, 3, 2],
          [5, 8, 9],
        ], columns = ['A', 'B', 'C'], index=['Row 1', 'Row 2', 'Row 3', 'Row 4', 'Row 5'])

        self.model = TableModel(data)
        self.table.setModel(self.model)
        self.setCentralWidget(self.table)


app=QtWidgets.QApplication(sys.argv)
window=MainWindow()
window.show()
app.exec_()

【问题讨论】:

【参考方案1】:

您可以循环查看selectedIndexes(),然后最终对它们进行排序。

def keyPressEvent(self, event):
    if event.matches(QtGui.QKeySequence.Copy):
        data = []
        for index in sorted(self.selectedIndexes()):
            data.append(('\t\t\t\t'.format(
                index.row(), index.column(), index.data())))
        if data:
            QtWidgets.QApplication.clipboard().setText(
                'Row\t\tCol\t\tValue:\n' + '\n'.join(data))
            return
    QtWidgets.QTableView.keyPressEvent(self, event)

请注意,默认的 QModelIndex 实现支持先按行排序,然后按列排序,但您可以使用 lambda 更改行为:

for index in sorted(self.selectedIndexes(), key=lambda i: (i.column(), i.row())):

【讨论】:

以上是关于如何在 Navicat 复制和粘贴数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QTableView 中复制和粘贴多行/列(来自 pandas 数据框的数据源)? [复制]

如何在windows下复制到ubuntu下粘贴

如何在windows下复制到ubuntu下粘贴

Mac MAMP + Navicat数据库连接注意事项

如何将数据复制并粘贴到 MySQL Workbench 表中?

vim 如何与外界粘贴复制